gpt4 book ai didi

Python- "in"和 "in x for x in"有什么区别

转载 作者:太空狗 更新时间:2023-10-30 00:28:05 25 4
gpt4 key购买 nike

这是我的 Python 代码:

# 1)
if (x not in z for z in y):

# 2)
if (x not in y):

其中 y 可以是如下列表:

y = ['1','2','3']

谁能解释一下这两个句子的区别?谢谢!

最佳答案

生成器

首先,(x not in z for z in y) 是一个生成器语句,如果 if 在它前面,它总是返回 True .

if (x not in z for z in y): # Always returns True

这可用于查看是否有任何或所有嵌套迭代器包含 x

例如

if any(x in z for z in y): # Returns True if any of the z's contain x
if all(x in z for z in y): # Returns True only if all of the z's contain x

所以如果 y 是这样的:

y = ['hello','how','are','you']

然后如果 x 是,例如 'e',那么上面的 any 理解将返回 True,但是 all 理解将返回 False

有条件的

所以这就是生成器理解内部发生的事情:如果 y 是一个列表,并且您测试:

(x not in z for z in y)

y 中的 z 必须是可迭代的,以便测试包含哪些字符串,但在这种情况下,您只能看到长度为 1 的字符串中是否有内容。一个更好的例子是使用整数:

y = [1, 2, 3]

if (x not in z for z in y):

会失败,因为整数是不可迭代的,但是

if (x not in y):

会成功,因为您可以测试实际列表中的成员资格。

当你有

y = ['1','2','3']

类似的嵌套级别是:

y = [(1,), (2,), (3,)]

(x not in z for z in y)

您正在测试 x 是否在这些元组之一中。

这有意义吗?

关于Python- "in"和 "in x for x in"有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22084219/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com