0
1

More than 3 years have passed since last update.

Pythonのリスト内包表記による2次元配列の転置

Last updated at Posted at 2021-08-22

リストの転置

調べても出てこなかったので。
たくさん出てきます。きちんと調べましょう(ごめんなさい)。
2次元配列aを転置したものを変数bに代入することを考えます。
b[x][y]にはa[y][x]の要素が入っています。
配列aの縦と横の大きさは同じでなくてもよいものとします。

for構文を使ったやり方

こちらが一般的なやり方でしょうか。

# 転置する配列
a = [[1,  2,  3,  4],
     [5,  6,  7,  8],
     [9, 10, 11, 12]]

# 配列aの縦と横の大きさ
height = len(a)
width = len(a[0])

# 配列bを、各要素を0で初期化して定義
b = [[0] * height for _ in range(width)]

# aを転置したものをbに代入
for i in range(height):
    for j in range(width):
        b[j][i] = a[i][j]

# 結果確認
print(b)  # [[1, 5, 9], [2, 6, 10], [3, 7, 11], [4, 8, 12]]

リスト内包表記を使ったやり方

こちらの方がすっきり書けます。
が、私はこのやり方だと頭がこんがらがります。精進します。

# 転置する配列
a = [[1,  2,  3,  4],
     [5,  6,  7,  8],
     [9, 10, 11, 12]]

# 配列aの縦と横の大きさ
height = len(a)
width = len(a[0])

# aを転置したものをbに代入
b = [[a[y][x] for y in range(height)] for x in range(width)]

# 結果確認
print(b)  # [[1, 5, 9], [2, 6, 10], [3, 7, 11], [4, 8, 12]]
0
1
1

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
1