在“forloop语句”中使用“not”

2024-06-14 06:51:37 发布

您现在位置:Python中文网/ 问答频道 /正文

  1. 为什么不能在for语句中使用not? 假设object和{}都是iterable

  2. 如果你做不到,还有别的办法吗?

下面是一个示例,但是“显然”语法错误:

tree = ["Wood", "Plank", "Apples", "Monkey"]

plant = ["Flower", "Plank", "Rose"]

for plant not in tree:
    # Do something
    pass 
else:
    # Do other stuff
    pass

Tags: tree示例forobjectnotpass语句iterable
3条回答

看来你把一些事情弄糊涂了。for循环用于迭代序列(列表、元组、字符串的字符、集合等)。not运算符反转布尔值。一些例子:

>>> items = ['s1', 's2', 's3']
>>> for item in items:
...   print item
...
s1
s2
s3
>>> # Checking whether an item is in a list.
... print 's1' in items
True
>>> print 's4' in items
False
>>>
>>> # Negating
... print 's1' not in items
False
>>> print 's4' not in items
True

如果objectslist是两个列表,并且您希望迭代objects中不在list中的每个元素,则需要以下内容:

for object in objects:
    if object not in list:
        do_whatever_with(object)

它循环遍历objects中的所有内容,只处理list中不存在的内容。请注意,这并不是非常有效;您可以使用list创建一个集合来进行有效的in检查:

^{pr2}$

这里有一种方法,使用集合并假设objects和{}都是iterable:

for x in set(objects).difference(lst):
    # do something

首先,不应该调用变量list,这将与内置名称冲突。现在解释一下:表达式set(objects).difference(lst)执行set difference,例如:

^{pr2}$

如您所见,我们在objects中找到了不在列表中的元素。在

相关问题 更多 >