リストのリストから「列」を削除するにはどうすればよいですか?
与えられた:
L = [
["a","b","C","d"],
[ 1, 2, 3, 4 ],
["w","x","y","z"]
]
「列」2を削除して、次の情報を取得したいと思います。
L = [
["a","b","d"],
[ 1, 2, 4 ],
["w","x","z"]
]
ありますか slice または デル それを行う方法は?何かのようなもの:
del L[:][2]
あなたはループすることができます。
for x in L:
del x[2]
大量のデータを処理する場合は、そのような高度なスライスをサポートするライブラリを使用できます。ただし、リストの単純なリストはスライスされません。
そのリストを繰り返し処理して、削除するインデックスを削除するだけです。
例えば
for sublist in list:
del sublist[index]
少しねじれたバージョン-
index = 2 #Delete column 2
[ (x[0:index] + x[index+1:]) for x in L]
あなたはリスト内包でそれをすることができます:
>>> removed = [ l.pop(2) for l in L ]
>>> print L
[['a', 'b', 'd'], [1, 2, 4], ['w', 'x', 'z']]
>>> print removed
['d', 4, 'z']
リストをループし、すべての要素を位置2にポップします。
削除された要素のリストと、これらの要素のないメインリストがあります。
これは、必要な列を削除する非常に簡単な方法です。
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']]
L= [['a', 'b', 'C', 'd'], [1, 2, 3, 4], ['w', 'x', 'y', 'z']]
_=[i.remove(i[2])for i in L]
pop()
の代替:
[x.__delitem__(n) for x in L]
ここで、n
は、削除する要素のインデックスです。
新しいリストを作成してもかまわない場合は、次のことを試すことができます。
filter_col = lambda lVals, iCol: [[x for i,x in enumerate(row) if i!=iCol] for row in lVals]
filter_out(L, 2)
[(x[0], x[1], x[3]) for x in L]
それはうまくいきます。