在Python中,如何从列表列表中删除“列”? 给出:
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 方法可以做到这一点?类似的东西:
del L[:][2]
答案 0 :(得分:9)
你可以循环。
for x in L:
del x[2]
如果您正在处理大量数据,则可以使用支持复杂切片的库。但是,一个简单的列表列表不会切片。
答案 1 :(得分:6)
只需遍历该列表并删除要删除的索引。
例如
for sublist in list:
del sublist[index]
答案 2 :(得分:3)
略微扭曲的版本 -
index = 2 #Delete column 2
[ (x[0:index] + x[index+1:]) for x in L]
答案 3 :(得分: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中的每个元素。
您已删除了元素列表以及没有这些元素的主列表。
答案 4 :(得分: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']]
答案 5 :(得分:1)
L= [['a', 'b', 'C', 'd'], [1, 2, 3, 4], ['w', 'x', 'y', 'z']]
_=[i.remove(i[2])for i in L]
答案 6 :(得分:0)
如果您不介意创建新列表,则可以尝试以下操作:
filter_col = lambda lVals, iCol: [[x for i,x in enumerate(row) if i!=iCol] for row in lVals]
filter_out(L, 2)
答案 7 :(得分:0)
[(x[0], x[1], x[3]) for x in L]
工作正常。
答案 8 :(得分:0)
pop()
的替代方法:
[x.__delitem__(n) for x in L]
n
是要删除的元素的索引。