一尘不染

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

python

我有以下代码:

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

阅读 219

收藏
2021-01-20

共1个答案

一尘不染

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

in在开始循环之前,仅对一次for循环标头中运算符右侧的表达式求值。您可以在文档中阅读:

for_stmt :: =“ for” target_list“ in” expression_list“:”套件
              [“ else”“:”套件]

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

实际上,第二个代码示例效率 较低, 因为存在不必要的分配。

2021-01-20