2012-11-06 27 views

Trả lời

7

Bạn có thể lặp lại.

for x in L: 
    del x[2] 

Nếu bạn đang xử lý nhiều dữ liệu, bạn có thể sử dụng thư viện hỗ trợ cắt xén tinh vi như thế. Tuy nhiên, một danh sách các danh sách đơn giản không cắt.

6

chỉ cần lặp qua danh sách đó và xóa chỉ mục mà bạn muốn xóa.

ví dụ

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

giải pháp này là tốt nhất –

+0

giải pháp này là chậm – user3085931

+0

Bạn có thể vui lòng cho tôi biết giải pháp tốt nhất cho Prob này là gì hay không :) – Myjab

0

Nếu bạn không nhớ vào việc tạo danh sách mới thì bạn có thể thử như sau:

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

filter_out(L, 2) 
0

Đây là một cách rất dễ dàng để loại bỏ bất cứ điều gì bạn muốn cột.

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

Một phiên bản hơi xoắn -

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] 

Nó hoạt động tốt.

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

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

Bên cạnh thực tế là việc sử dụng listcomp cho các tác dụng phụ của nó thường không được ưa chuộng, sẽ không hoạt động trừ khi yếu tố bạn xóa sẽ xảy ra trước tiên trong danh sách. Ví dụ, nếu một trong các danh sách con là [1,2,1,3], thì 'remove' sẽ trả về' [2,1,3] ', không phải' [1,2,3] '. – DSM

2

Bạn có thể làm điều đó với một danh sách hiểu:

>>> removed = [ l.pop(2) for l in L ] 
>>> print L 
[['a', 'b', 'd'], [1, 2, 4], ['w', 'x', 'z']] 
>>> print removed 
['d', 4, 'z'] 

Nó lặp danh sách và bật mọi phần tử ở vị trí 2.

Bạn đã có danh sách các yếu tố loại bỏ và danh sách chính không có những yếu tố này.