for循环评估其表达式列表的次数是多少?

时间:2014-06-28 19:13:26

标签: python for-loop

我有以下代码:

list1 = [4,1,2,6]
for elem in sorted(list1):
    #some task

我想知道Python使用sorted()方法对列表进行多少次排序?是每次迭代还是只进行一次?

换句话说,以下代码更有效率?

list1 = [4,1,2,6]
list1 = sorted(list1)
for elem in list1:
    #some task 

1 个答案:

答案 0 :(得分:9)

在两个代码示例中,列表仅排序一次。

在循环开始之前,for-loop头中in运算符右侧的表达式仅被计算一次。您可以在documentation

中了解相关信息
for_stmt ::=  "for" target_list "in" expression_list ":" suite
              ["else" ":" suite]
     

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

事实上,第二个代码示例 less 效率很高,因为存在不必要的赋值。