で、複数の配列から値を一つずつ順に取り出し、複数の変数に放り込んで for ループを回したい状況が生じた。
「python for in multiple variables」でググると以下のページを見つけた。
こんな感じか?とやってみたら
ということで、二次元リストの転置する必要が生じた。
「python for in multiple variables」でググると以下のページを見つけた。
- stackoverflow / 2018-08-20: Using multiple variables in a for loop in Python
こんな感じか?とやってみたら
for i,j in [[1,2],[3,4]]: print(i) print(j)
1 2 3 4
for i,j in [[1,2,3],[4,5,6]]: print(i) print(j)
--------------------------------------------------------------------------- ValueError Traceback (most recent call last) <ipython-input-14-d15f354f447c> in <module>() ----> 1 for i,j in [[1,2,3],[4,5,6]]: 2 print(i) 3 print(j) ValueError: too many values to unpack (expected 2)Oh!、そうじゃないよ
ということで、二次元リストの転置する必要が生じた。
「python 2d-list transpose」でググったら以下のページを見つけた。
numpy の array や pandas の df には転置があるらしい。
素の python で list を転置したい場合は zip(*[x, y]) で可能とのこと。
こんな感じ。
と、まぁ出来はしたんだが、あとから、最初のページ読み直していたら、ちゃんと書いてるし、わざわざリストに放り込まなくても zip(x,y) で問題なかった。
ここで出てきた「*」の名称は「* アンパック」または「* unpacking」で良いのだろうか?
JavaScript で言うところのスプレッド構文(...)という理解でいいんだよな?
- note.nkmk.me / 2018-03-29: Pythonリスト型の二次元配列の行と列を入れ替える(転置)
numpy の array や pandas の df には転置があるらしい。
素の python で list を転置したい場合は zip(*[x, y]) で可能とのこと。
こんな感じ。
for i,j in zip(*[[1,2,3],[4,5,6]]): print(i) print(j)
1 4 2 5 3 6
と、まぁ出来はしたんだが、あとから、最初のページ読み直していたら、ちゃんと書いてるし、わざわざリストに放り込まなくても zip(x,y) で問題なかった。
for i,j in zip([1,2,3],[4,5,6]): print(i) print(j)
1 4 2 5 3 6
ここで出てきた「*」の名称は「* アンパック」または「* unpacking」で良いのだろうか?
- Python / 3.10.1 Documentation / The Python Language Reference / 6. Expressions # 6.3.4. Calls, (ja)
- PEP 448 -- Additional Unpacking Generalizations
JavaScript で言うところのスプレッド構文(...)という理解でいいんだよな?
タグ
コメントをかく