Python for循环执行

Mus*_*afa 1 python for-loop python-2.7

for a in sorted(arr):
    doSomething()
Run Code Online (Sandbox Code Playgroud)

VS

sArr = sorted(arr)
for a in sArr:
    doSomething()
Run Code Online (Sandbox Code Playgroud)

那两个是完全一样的,还是会消耗更多的cpu周期呢?

意思是,在第一个例子中,每个循环会调用(arr)吗?

谢谢

unw*_*ind 5

他们几乎是一样的.

文件说:

表达式列表评估一次; 它应该产生一个可迭代的对象.

因此,sorted()在上面的代码中,不存在多次调用的风险.

第一种形式仍然是更好的,因为它是更短,更简洁,并可能使其能够更好地优化(因为intepreter可以计算出该排序名单,是完全跳出循环结束后的范围).