这里我希望按索引删除列表中的项目。 输入是
li = [[1,2,3,4],[5,6,7,8]]
例外输出
[[1,3,4],[5,7,8]]
我的尝试是,
print [x.pop(1) for x in li]
答案 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 ]