2014-01-13 131 views
1

我刚刚了解了列表理解,但我无法完全理解它在正确的上下文中工作。 我的for循环: 结果和实例都列出如何在Python中使用列表理解for循环python

for i in results: 
    instances.remove(i) 
    results.remove(i) 

我试图[i for i in one if one.count(i)<2 if two.count(i)<2],但它不工作。我可以用它来处理它们中的一个,[i for i in one if one.count(i)<2],但我想将它们两者合并到同一个循环中。有人能告诉我最简单的方法吗?

+3

迭代时不要修改列表。 – aIKid

+1

您的'for'循环可能无法正常工作,因为您在循环时修改了'results' –

+0

您能给我们提供示例输出和输入吗? – aIKid

回答

4

假设results是一个列表。你似乎试图做到这一点

for i in results: 
    instances.remove(i) 
del results[:] 

列表理解是在这里使用的错误的东西。你并没有试图从一个序列中创建一个新的列表。

这个循环是相似的,但会删除相反的顺序

while results: 
    instances.remove(results.pop()) 
+0

或'results = []'来猜测。 – aIKid

+0

@alKid,对于第二种解决方案,您不一定要重新结合“结果” –

+2

+1。酷 – aIKid

1

您需要先结果出来的for循环的实例。将它设置在它之后,然后在for循环完成后将其删除。