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