概述
for value in list1[start:stop]: ....
python是否首先复制列表的那一部分(就像在执行list2 = list1 [:]时那样)?对于大型列表,这可能会变得非常昂贵!
如果它没有在上面的例子中复制它,那总是适用吗?我需要经常在(非常)大型列表的大部分上执行以下类型的循环:
for index,value in enumerate(list1[start:stop],start): ....
请注意,这与迭代无关!迭代本身不会复制,即使您将结果丢弃,列表也会复制.
它只复制指针,所以如果你总是采用非常小的子列表,你可能不会注意到任何差异.如果子列表较大,您可以迭代索引([x]范围)或使用itertools.islice.后者必须首先跳过启动项目,因此您可能需要花费大量时间才能节省内存.前者是丑陋的,但大多数都是无意义的.
总结
以上是编程之家为你收集整理的Python:通过’list [a:b]’的迭代是否首先复制列表的那部分(这可能很昂贵)?全部内容,希望文章能够帮你解决Python:通过’list [a:b]’的迭代是否首先复制列表的那部分(这可能很昂贵)?所遇到的程序开发问题。
如果您也喜欢它,动动您的小指点个赞吧