0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

zipと*で2次元配列の行と列を変換

Posted at

leetcodeを解く時に、2次元配列の各列の値をlistにまとめたかったので、
調べてみました。

実例

例えば2次元配列 two_dimentional_array = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
が定義されている時、ゴールが[(1, 4, 7) (2, 5, 8) (3, 6, 9)]だとします。

result = [i for i in zip(*two_dimentional_array)]

とすると結果は

print(result)
[(1, 4, 7), (2, 5, 8), (3, 6, 9)]

になりました。

*によるlistの展開とzipによる

*two_dimentional_arrayをピックアップしますと、*によって2次元配列が1次元配列に展開されます。

print(*two_dimentional_array)
[1, 2, 3] [4, 5, 6] [7, 8, 9]

zip関数によって、それぞれ展開されたリストをタプルにまとめる。

zip関数の引数に展開した3つのリストをそれぞれパラメータとして設定します。
上記のlistの要素をindexが0から同時に取得していき、タプルでまとめたzipオブジェクト(イテレータ)が
返却されます。

i = zip(*tow_dimentional_array)
print(i)
<zip object at 0x7f241aa13300>

i(イテレータ)をfor文で回していくことで、行と列が変換されるタプルが返却され、
上述のようにリスト内包表記でlistで取得しました。

0
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?