gpt4 book ai didi

python - 用于一次性可迭代的列表或元组

转载 作者:行者123 更新时间:2023-12-02 01:32:38 24 4
gpt4 key购买 nike

某些 Python 内置函数,例如 anyall,需要可迭代参数。我遇到的一个常见模式是我通过函数调用链接创建可迭代对象。例如:

locations = ["foo", "bar", "baz"]
if any(["city" in location for location in locations]):
print("Locations includes a city")

使用元组执行此操作有什么好处吗...

locations = ["foo", "bar", "baz"]
if any(("city" in location for location in locations)):
print("Locations includes a city")

...在内存使用或执行时间方面?

最佳答案

这不是一个元组;这是一个生成器表达式。而且有一个非常大的好处:生成器表达式仅生成 any 这样的值。请求它们,而列表理解必须在 any 之前生成完整的值列表。可以开始迭代它。考虑以下因素:

if any(["city" in location for location in ["city", "country", "county", "state"]):

列表理解必须构建 [True, False, False, False]之前any就可以开始迭代了,当然还有最后三个False值是无关紧要的,因为 any一旦看到第一个 True 就会返回。比较

if any(("city" in location for location in ["city", "country", "county", "state"])):

在这种情况下"city" in "city"将在 any 之前计算看到True并返回,而无需进行其他三个比较。

当生成器表达式是函数的唯一参数时,您可以省略周围的括号:

if any("city" in location for location in locations):

关于python - 用于一次性可迭代的列表或元组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72955612/

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