Python 生成器表达式括号奇怪之处
- 2025-03-12 08:50:00
- admin 原创
- 53
问题描述:
我想确定列表是否包含某个字符串,因此我使用生成器表达式,如下所示:
g = (s for s in myList if s == myString)
any(g)
我当然想内联它,所以我这样做:
any((s for s in myList if s == myString))
然后我认为使用单括号看起来会更好,所以我尝试:
any(s for s in myList if s == myString)
没想到它真的有效。惊喜!它真的有效!
那么这是合法的 Python 还是只是我的实现允许的?如果合法,这里的一般规则是什么?
解决方案 1:
这是合法的,一般规则是,生成器表达式周围确实需要括号。作为特殊例外,函数调用中的括号也算数(对于只有一个参数的函数)。(文档)
请注意,测试是否出现my_string
在my_list
my_string in my_list
不需要生成器表达式或调用any()
!
解决方案 2:
它是“合法的”,并得到明确支持。一般规则是“((x))
始终与 相同(x)
”(尽管当然(x)
并不总是与 相同x
),并且它应用于生成器表达式只是为了方便。
相关推荐
热门文章
项目管理软件有哪些?
热门标签
曾咪二维码
扫码咨询,免费领取项目管理大礼包!
云禅道AD