Python:按索引删除列表中的项目

时间:2016-04-21 06:39:47

标签: python list

这里我希望按索引删除列表中的项目。 输入是

li  = [[1,2,3,4],[5,6,7,8]]

例外输出

[[1,3,4],[5,7,8]]

我的尝试是,

print [x.pop(1) for x in li]

3 个答案:

答案 0 :(得分:2)

您可以像这样使用del运算符:

for sublist in list:
    del sublist[1]

答案 1 :(得分:1)

您实际上删除了给定索引中的项目但是打印出错误的列表。弹出项目后,只需打印li

>>> [x.pop(1) for x in li]
>>> print li

但是,你真的必须使用列表推导吗?因为在列表理解中调用.pop()会累积已删除的项目并使用它们创建一个新的,完全无用的列表。

相反,您可以执行以下操作:

>>> for lst in li:
...    lst.pop(1)   

答案 2 :(得分:0)

pop,与del一样,更改基础列表,因此您必须明确地遍历子列表以删除第二个元素,然后打印修改后的列表。

for l in li: del l[1]
print li

另一方面,如果您不想更改列表但直接打印结果,则可以使用列表解析:

print [ (l[:1] + l[2:]) for l in li ]