python 2次元リストの任意の列を削除する方法

2次元リストの任意の列を削除する方法を説明します。
例えば、下記の様に3行3列の2次元リストから任意の列(ここでは3列目)を削除する方法を説明します。

【削除前】

l_beforeDelete = [[11, 12, 13],
                  [21, 22, 23],
                  [31, 32, 33]]

【削除後】

l_afterDelete = [[11, 12],
                 [21, 22],
                 [31, 32]]

1列削除(delを利用)

3列目(indexの2)を削除する方法を示します。

l_beforeDelete = [[11, 12, 13],
                  [21, 22, 23],
                  [31, 32, 33]]

for row in l_beforeDelete:
    del row[2]

print(*l_beforeDelete, sep="\n")

"""出力
[11, 12]
[21, 22]
[31, 32]
"""

「for row in l_beforeDelete:」と「del row[2]」により、各行の要素(*1)を1つずつ削除しています。
全ての行から1要素減るため、結果として1列削除されます。

(*1)1行目の2列目、2行目の3列目、3行目の3列目

複数列削除(lamda式を利用)

3列目と4列目(indexの2と3)を削除する方法を示します。

l_beforeDelete = [[11, 12, 13, 14, 15],
                  [21, 22, 23, 24, 25],
                  [31, 32, 33, 34, 35]]

l_afterDelete = map(lambda x: x[:2]+x[4:], l_beforeDelete)

print(*l_afterDelete, sep="\n")

"""出力
[11, 12, 15]
[21, 22, 25]
[31, 32, 35]
"""

  • l_afterDelete = map(lambda x: x[:2]+x[4:], l_beforeDelete)
    • x[:2]により1列目と2列目を取得し、x[4:]により5列目を取得する。
    • lambda x: x[:2]+x[4:]により、各行の1列目、2列目、5列目を取得する。結果として3列目と4列目が削除される。

参考

Remove a column from a nested list in Python – Stack Overflow
本記事で説明していない方法がわかります。

コメント

タイトルとURLをコピーしました