19

リストのリストから「列」を削除するにはどうすればよいですか?
与えられた:

L = [
     ["a","b","C","d"],
     [ 1,  2,  3,  4 ],
     ["w","x","y","z"]
    ]

「列」2を削除して取得したい:

L = [
     ["a","b","d"],
     [ 1,  2,  4 ],
     ["w","x","z"]
    ]

それを行うスライスまたはデルメソッドはありますか? 何かのようなもの:

del L[:][2]
4

9 に答える 9

13

ループできます。

for x in L:
    del x[2]

大量のデータを扱っている場合は、そのような洗練されたスライスをサポートするライブラリを使用できます。ただし、リストの単純なリストはスライスされません。

于 2012-11-06T04:38:37.767 に答える
7

そのリストを繰り返して、削除したいインデックスを削除するだけです。

例えば

for sublist in list:
    del sublist[index]
于 2012-11-06T04:40:25.647 に答える
4

少しひねったバージョン:

index = 2  # Delete column 2 
[(x[0:index] + x[index+1:]) for x in L]
于 2012-11-06T04:53:12.777 に答える
2
[(x[0], x[1], x[3]) for x in L]

それは正常に動作します。

于 2012-11-06T09:34:11.893 に答える
1

これは、必要な列を削除する非常に簡単な方法です。

L = [
["a","b","C","d"],
[ 1,  2,  3,  4 ],
["w","x","y","z"]
]
temp = [[x[0],x[1],x[3]] for x in L] #x[column that you do not want to remove]
print temp
O/P->[['a', 'b', 'd'], [1, 2, 4], ['w', 'x', 'z']]
于 2012-11-06T04:47:25.557 に答える
1
L = [['a', 'b', 'C', 'd'], [1, 2, 3, 4], ['w', 'x', 'y', 'z']]
_ = [i.remove(i[2]) for i in L]
于 2012-11-06T16:29:55.803 に答える
0

新しいリストを作成しても構わない場合は、次のことを試してください。

filter_col = lambda lVals, iCol: [[x for i,x in enumerate(row) if i!=iCol] for row in lVals]

filter_out(L, 2)
于 2012-11-06T04:46:18.943 に答える
0

の代替pop():

[x.__delitem__(n) for x in L]

n削除する要素のインデックスを次に示します。

于 2019-06-16T03:10:01.803 に答える