1

我对在 python 中执行此操作的正确方法感到困惑......因此,如果我想使用 for 循环遍历列表并检查列表“A”的每个元素是否在 2 个或更多其他列表中,但我似乎不明白如何做到这一点......这是我的意思的一些基本代码:

>>> a
[1, 2, 3, 4, 5]
>>> even
[2, 4]
>>> odd
[1, 3]
>>> for i in a:
...     if i in even or odd:
...             print(i)
... 
1
2
3
4
5

为什么这个代码打印 5 因为 5 既不在偶数列表中也不在奇数列表中?还有什么是正确的方法来做到这一点,以便我可以遍历一个列表并检查每个元素是否在至少一个其他数量的列表中?

4

2 回答 2

5

问题在这里:i in even or odd

这是这样解析的:

(i in even) or (odd).

Python 毫无帮助地尝试将odd列表转换为布尔值(在这种情况下True ,因为列表不是空的)。

Try i in even or i in odd,它正确地检查是否i存在于evenorodd中。

于 2014-02-14T20:13:08.653 回答
3

您需要使用in两次:

if i in even or i in odd:

i in even将检查是否ieven. i in odd将检查是否iodd.


否则,您的代码将按如下方式评估:

if (i in even) or (odd):

此外,if 语句的条件将始终评估为,True因为odd它是一个非空列表(True在 Python 中始终评估为)。


最后,您需要记住,尽管它的语法有些相似,但 Python不是英文的。:)

于 2014-02-14T20:12:48.650 回答