Python for语句中的Iterable对象是否每次运行时都被检查(重新计算)?

Python for语句中的Iterable对象是否每次运行时都被检查(重新计算)?,python,Python,当我在python3中解决问题时,我编写了这样一个简单的代码 从itertools导入组合并替换 word,n=input().split() 单词,n=已排序(单词),int(n) 对于c与替换(单词,n)的组合形式: 打印(“”.连接(c)) 在那之后,我发现其他人也这么做 从itertools导入组合并替换 s、 k=输入().split() 对于组合_与_替换中的c(已排序,int(k)): 打印(“.”连接(c)) 现在我很好奇,“sorted()函数运行一次吗?还是多次运行?(在

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

从itertools导入组合并替换
word,n=input().split()
单词,n=已排序(单词),int(n)
对于c与替换(单词,n)的组合形式:
打印(“”.连接(c))
在那之后,我发现其他人也这么做

从itertools导入组合并替换
s、 k=输入().split()
对于组合_与_替换中的c(已排序,int(k)):
打印(“.”连接(c))
现在我很好奇,“sorted()函数运行一次吗?还是多次运行?(在
中,对于c,在与替换(sorted(s),int(k))的组合中:
)。”
所以,我写了一些代码来测试它

test=[1,2,3]
对于测试中的t:
打印(t)
test.append('hi')
它不断地打印“嗨”

for语句中的iterable对象是否每次运行时都被检查(重新计算)?或者仅当iterable对象更改时才进行检查?
而且,对于c中带有替换的组合(排序的,int(k)):,sorted()函数只运行一次还是运行多次

combinations_with_replacement(sorted(s), int(k))
这是一个接受列表和数字的函数。在传递列表之前,请先对列表进行排序

combines_with_replacement
获取此信息并返回迭代器

你的

循环永远看不到您传入的列表,只有
compositions\u with\u replacement
返回的迭代器

简言之,没有

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

combines_with_replacement
获取此信息并返回迭代器

你的

循环永远看不到您传入的列表,只有
compositions\u with\u replacement
返回的迭代器


简而言之,没有。

一个非常简单的检查方法是使用它:
defsorted2(xs):print('Run one!');返回已排序(xs)
。一种非常简单的检查方法是使用它:
def sorted2(xs):print('Run one!');返回已排序(xs)
for c in combinations_with_replacement ...