栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

迭代与列表串联

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

迭代与列表串联

append
一次添加每个项目,这是导致它变慢的原因,以及对的重复调用
append

但是, 在这种情况下,

+=
运算符 不是。的
语法糖
+
。该
+=
运营商实际上并没有建立一个新的列表,然后分配给它回来了,它改变了左手操作到位。当
timeit
同时使用10,000次时,这很明显。

>>> timeit.timeit(stmt="l = l + j", setup="l=[1,2,3,4]; j = [5,6,7,8]", number=10000)0.5794978141784668>>> timeit.timeit(stmt="l += j", setup="l=[1,2,3,4]; j = [5,6,7,8]", number=10000)0.0013298988342285156

+=
快得多(约500倍)

您还具有

extend
列表方法,该方法可以将任何可迭代的内容(不只是另一个列表)附加到类似
l.extend(l2)

>>> timeit.timeit(stmt="l.extend(j)", setup="l=[1,2,3,4]; j = [5,6,7,8]", number=10000)0.0016009807586669922>>> timeit.timeit(stmt="for e in j: l.append(e)", setup="l=[1,2,3,4]; j = [5,6,7,8]", number=10000)0.00805807113647461

从逻辑上讲等同于追加,但是您可以看到快得多。

所以要解释一下:迭代比

+
因为
+
必须构造一个完整的新列表要快

extend
比迭代更快,因为它是内置列表方法,并且已经过优化。从逻辑上讲,它等同于重复添加,但实现方式有所不同。

+=
它比
extend
可以在适当位置修改列表,知道列表必须大得多且无需重复调用函数的速度快。假定您要在列表中附加另一个列表/元组



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/612086.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号