2012-11-06 184 views

回答

7

您可以循環。

for x in L: 
    del x[2] 

如果您正在處理大量數據,則可以使用支持像這樣的複雜切片的庫。但是,列表的簡單列表不會切片。

6

只是遍歷該列表並刪除您想要刪除的索引。

例如

for sublist in list: 
    del sublist[index] 
+0

這一個是最好的 –

+0

這個解決方案很慢 – user3085931

+0

可否請你讓我知道什麼是這個問題最好的解決方案:) – Myjab

0

如果不創造新的列表介意,那麼你可以嘗試以下方法:

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

filter_out(L, 2) 
0

這是一個非常簡單的方法來移除任何你想要的列。

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']] 
3

稍微扭曲的版本 -

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

它工作正常。

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

     _=[i.remove(i[2])for i in L] 
+0

除了使用listcomp的副作用通常是不受歡迎的事實,除非你正在刪除的元素恰好是列表中的第一個元素,否則它將不起作用。例如,如果其中一個子列表是[1,2,1,3],那麼'remove'將返回'[2,1,3]',而不是'[1,2,3]'。 – DSM

2

你可以用一個列表理解做到這一點:

>>> 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

你已經得到刪除的元素的列表和主列表沒有這些元素。