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
本記事で説明していない方法がわかります。

コメント