gpt4 book ai didi

python - for 语句中的 Iterable 对象每次运行时都会检查(重新计算)吗?

转载 作者:太空宇宙 更新时间:2023-11-03 21:15:42 25 4
gpt4 key购买 nike

当我在 python3 中解决问题时,我编写了一个像这样的简单代码,

from itertools import combinations_with_replacement

word, n = input().split()
word, n = sorted(word), int(n)

for c in combinations_with_replacement(word, n):
print(''.join(c))

然后我发现其他人也这样做,

from itertools import combinations_with_replacement

s, k = input().split()

for c in combinations_with_replacement(sorted(s), int(k)):
print("".join(c))

现在我很好奇,“sorted() 函数运行一次吗?还是多次?(在 for c in combinations_with_replacement(sorted(s), int(k)): 中)。”
因此,我编写了一些代码来测试它。

test = [1, 2, 3]

for t in test:
print(t)
test.append('hi')

并且它不断地打印“hi”

每次运行时,for 语句中的可迭代对象是否都会检查(重新计算)?或者仅当可迭代对象发生变化时才检查?
并且,在 for c in combinations_with_replacement(sorted(s), int(k)): ,sorted()函数只运行一次还是运行多次?

最佳答案

combinations_with_replacement(sorted(s), int(k))

这是一个接受列表和数字的函数。在传入列表之前先对列表进行排序。

combinations_with_replacement 获取此信息并返回一个迭代器。

你的

for c in combinations_with_replacement ...

loop 永远不会看到您传入的列表,只会看到 combinations_with_replacement 返回的迭代器。

简而言之,没有。

关于python - for 语句中的 Iterable 对象每次运行时都会检查(重新计算)吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54730907/

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