web-dev-qa-db-ja.com

リストのリストからN番目のリストアイテムを削除するにはどうすればよいですか(列の削除)?

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

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]
15
P Moran

あなたはループすることができます。

for x in L:
    del x[2]

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

11
Dietrich Epp

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

例えば

for sublist in list:
    del sublist[index]
7
Myjab

少しねじれたバージョン-

index = 2  #Delete column 2 
[ (x[0:index] + x[index+1:])  for x in L]
3
Swapnil

あなたはリスト内包でそれをすることができます:

>>> 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にポップします。

削除された要素のリストと、これらの要素のないメインリストがあります。

3
jotacor

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

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']]
1
Heroic
       L= [['a', 'b', 'C', 'd'], [1, 2, 3, 4], ['w', 'x', 'y', 'z']]

       _=[i.remove(i[2])for i in L]
1
raton

pop()の代替:

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

ここで、nは、削除する要素のインデックスです。

0
AGN Gazer

新しいリストを作成してもかまわない場合は、次のことを試すことができます。

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

filter_out(L, 2)
0
[(x[0], x[1], x[3]) for x in L]

それはうまくいきます。

0
ParaMeterz