Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:for循环在列表上的性能_Python_Loops_For Loop_Generator_List Comprehension - Fatal编程技术网

Python:for循环在列表上的性能

Python:for循环在列表上的性能,python,loops,for-loop,generator,list-comprehension,Python,Loops,For Loop,Generator,List Comprehension,在我通过for循环迭代列表理解的实例中: 执行for循环时是否缓存列表,或者每次执行时是否重新生成列表? 换句话说,这两个例子会有不同的表现吗 for x in [list comprehension] vs 我可以使用迭代器,我相信迭代器使用的是生成器,但我只是好奇这里的Python for循环执行。列表理解返回一个列表。这两个示例之间的唯一区别是,在第二个示例中将输出列表绑定到一个变量 生成器表达式返回迭代器,这意味着: 在你使用它之前,它不会被评估 如果您想多次使用它,那么每次都必

在我通过for循环迭代列表理解的实例中:
执行for循环时是否缓存列表,或者每次执行时是否重新生成列表?

换句话说,这两个例子会有不同的表现吗

for x in [list comprehension]  
vs


我可以使用迭代器,我相信迭代器使用的是生成器,但我只是好奇这里的Python for循环执行。

列表理解返回一个列表。这两个示例之间的唯一区别是,在第二个示例中将输出列表绑定到一个变量

生成器表达式返回迭代器,这意味着:

  • 在你使用它之前,它不会被评估
  • 如果您想多次使用它,那么每次都必须生成它

    • 列表理解返回一个列表。这两个示例之间的唯一区别是,在第二个示例中将输出列表绑定到一个变量

      生成器表达式返回迭代器,这意味着:

      • 在你使用它之前,它不会被评估
      • 如果您想多次使用它,那么每次都必须生成它
      当你这样做的时候

      for x in [list comprehension]:
      
      整个列表是在for循环开始之前生成的。除了变量赋值外,它基本上与第二个示例相同。

      当您这样做时

      for x in [list comprehension]:
      

      整个列表是在for循环开始之前生成的。除了变量赋值外,它基本上与第二个示例相同。

      使用此命令:
      list\u construction=[list construction]
      实际上,您创建了另一个指向已保存数组的内存部分的指针

      因此的
      循环在两种情况下是相同的!请参阅此演示:

      >>> a=[1,2,4]
      >>> b=a
      >>> b
      [1, 2, 4]
      >>> a
      [1, 2, 4]
      >>> a.append(7)
      >>> a
      [1, 2, 4, 7]
      >>> b
      [1, 2, 4, 7]
      

      使用此命令:
      list\u construction=[list construction]
      实际上,您创建了另一个指向已保存数组的内存部分的指针

      因此
      循环在两种情况下是相同的!请参阅此演示:

      >>> a=[1,2,4]
      >>> b=a
      >>> b
      [1, 2, 4]
      >>> a
      [1, 2, 4]
      >>> a.append(7)
      >>> a
      [1, 2, 4, 7]
      >>> b
      [1, 2, 4, 7]