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

发布于 2021-01-29 14:11:26

我有以下代码:

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
关注者
0
被浏览
89
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

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

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

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

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

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



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看