0

我正在尝试将 for 循环和逻辑操作结合起来,如下所示并遇到编译错误。

关于如何解决这个问题的任何意见?

File "test.py", line 36
    for ((num in list) and (num not in handled_list)):
                                                        ^
SyntaxError: invalid syntax
4

5 回答 5

3

您也可以使用集合来执行此操作:

>>> a = [1, 2, 3, 4, 5]
>>> b = [3, 5]
>>> for num in set(a) ^ set(b):
...     print num
...
1
2
4
于 2013-04-29T06:07:47.437 回答
2

for语句不支持这种语法。语法只是for item in iterable--- 你不能指定条件。在循环内指定您的条件:

for num in list:
    if num in handled_list:
        continue
    # Do what you want with the elements in list but not in handled_list

或者预先创建一个列表(或其他可迭代),其中包含您想要迭代的内容。

于 2013-04-29T06:05:12.743 回答
1

for语句不允许您尝试执行条件。

但是,您可以检查是否存在:

假设如下:

nums = [1,2,3,5,4]
handled_list  = [12,3,5,23,4]
num = 2

if ((num in nums) and (num not in handled_list)):
    print "hello, i did find the number in nums but not in handled list"

迭代仍然在if语句中进行,但不允许访问每个迭代的元素。

于 2013-04-29T06:07:55.240 回答
1

尝试尽可能地紧贴您的示例,这是一个解决方案:

my_list = [1, 3, 5]
handled_list = [3]

for n in [num for num in my_list if num not in handled_list]:
    print n

强烈建议避免重新定义内置插件,就像您似乎对“列表”所做的那样。

于 2013-04-29T06:52:05.923 回答
0

for语句不能以这种方式使用。完成您想要做的事情的简单方法可能如下。

>>> for num in listOne:
        if num not in listTwo:
           # Do Something

此外,list它是一个内置对象,如果您不使用它作为变量名会很好。

于 2013-04-29T06:06:23.960 回答