在Python中,如何从列表列表中删除第N个列表项(列删除)?

P M*_*ran 15 python list slice del

在Python中,如何从列表列表中删除"列"?
鉴于:

L = [
     ["a","b","C","d"],
     [ 1,  2,  3,  4 ],
     ["w","x","y","z"]
    ]
Run Code Online (Sandbox Code Playgroud)

我想删除"列"2以获取:

L = [
     ["a","b","d"],
     [ 1,  2,  4 ],
     ["w","x","z"]
    ]
Run Code Online (Sandbox Code Playgroud)

是否有切片del方法可以做到这一点?就像是:

del L[:][2]
Run Code Online (Sandbox Code Playgroud)

Die*_*Epp 11

你可以循环.

for x in L:
    del x[2]
Run Code Online (Sandbox Code Playgroud)

如果您正在处理大量数据,则可以使用支持复杂切片的库.但是,一个简单的列表列表不会切片.

  • @DJ_Stuffy_K:此技术不会创建新列表,而是修改现有列表。但是,您可以事先复制列表。`new_L = [list(row) for row in L]`...这只是一种方法,它会为每一行创建一个浅拷贝,所以当你修改 `new_L` 时,原来的 `L` 将是未修改。 (2认同)

Myj*_*jab 7

只需遍历该列表并删除要删除的索引.

例如

for sublist in list:
    del sublist[index]
Run Code Online (Sandbox Code Playgroud)


jot*_*cor 5

您可以通过列表理解来做到这一点:

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

它循环列表并弹出位置 2 中的每个元素。

您已经删除了元素列表,并且主列表没有这些元素。