我有两张单子
x = [ None , None , "foo" , "bar" ]
y = [ "bar" , "foo" , "foo" ,"bar"]
len(x) == len(y)
我想检查列表x
中是否存在一个元素,即None
,然后删除该元素并删除y中相应的元素。
像removex[0] == None
,所以从x
和y
中移除x[0]
和y[0]
结果应该是:
x = ["foo","bar"]
y = ["foo","bar"]
我尝试了一种非常非python的方法,它给了我一个“列表索引超出范围”的错误:
for i in range(0,len(x)):
if(x[i] == None):
x.remove(x[i])
y.remove(y[i])
使用zip方法可以很好地实现这一点:
在这里,您可以一次遍历两个列表,创建一个包含x和y元素的元组的新列表。只有当x
e_x
中的元素不是None
时,才会添加这些元组。 外部的zip
将元组列表转换回两个单独的列表中。你知道吗编辑:正如金刚在评论中指出的那样,最好使用
is not None
而不是!= None
。我相应地更新了代码。你知道吗我们把你的名单称为xs和ys。你知道吗
应该会成功的。你知道吗
首先检查并找出需要删除的内容:
现在可以用它来过滤
x
和y
:请注意,在您的版本中,您将跳过索引并可能拥有
IndexError
,因为如果列表的初始长度是N
,并且您删除了一个项目,那么您仍然会循环N
次,但是列表现在是N-1
个项目。同样使用list.remove
,如果存在重复项(在您的示例中有重复项),则不能保证您正在删除正确的项相关问题 更多 >
编程相关推荐