您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Python:通过’list [a:b]’的迭代是否首先复制列表的那部分(这可能很昂贵)?

5b51 2022/1/14 8:22:59 python 字数 904 阅读 552 来源 www.jb51.cc/python

当我从开始到停止迭代list1的值时,如: for value in list1[start:stop]: .... python是否首先复制列表的那一部分(就像在执行list2 = list1 [:]时那样)?对于大型列表,这可能会变得非常昂贵! 如果它没有在上面的例子中复制它,那总是适用吗?我需要经常在(非常)大型列表的大部分上执行以下类型的循环: for index, value i

概述

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]’的迭代是否首先复制列表的那部分(这可能很昂贵)?所遇到的程序开发问题。


如果您也喜欢它,动动您的小指点个赞吧

除非注明,文章均由 laddyq.com 整理发布,欢迎转载。

转载请注明:
链接:http://laddyq.com
来源:laddyq.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


联系我
置顶