我在jupiter-notebook中编写了以下python代码:
x=['b','x','a']
y=['b','x','a']
for i in x:
if i in y:
x.remove(i)
print (x)
我期望有一个空列表,但输出为['x']。 代码有什么问题?
答案 0 :(得分:0)
之所以会出现这种现象,是因为您要在列表x
上进行迭代时删除它们。
要获得期望的结果(一个空列表),您应该使用列表理解:
x = [i for i in x if i not in y]
print(x) # prints []
在同一主题上检查这个StackOverflow问题:How to remove items from a list while iterating?
答案 1 :(得分:0)
之所以发生该错误,是因为您在迭代时要删除列表x
中的一个元素。
答案 2 :(得分:0)
您不必迭代。试试这个:
set(x)-set(y)
答案 3 :(得分:0)
在这里您可以使用 filter 函数,例如
x = list(filter(lambda element: element not in y, x))
请参见http://book.pythontips.com/en/latest/map_filter.html#filter