鱼C论坛

 找回密码
 立即注册
查看: 745|回复: 9

[已解决][新手问题]Python列表append和extend和+=[]的区别是什么?

[复制链接]
发表于 2020-4-26 10:59:21 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 liatanbo 于 2020-4-26 17:24 编辑

例1.1:
member1=["fishc.com","小甲鱼真帅"]
member1.append("版主真帅")
例1.2:
member1=["fishc.com","小甲鱼真帅"]
member1+=["版主真帅"]
例2.1:
member1=["fishc.com","小甲鱼真帅"]
member1.extend(["版主真帅","Python真好"])
例2.2:
member1=["fishc.com","小甲鱼真帅"]
member1+=["版主真帅","Python真好"]
以上例中,append()和extend()和使用+=[]有区别吗?如果有,区别在哪里?
————————————
根据   永恒的蓝色梦想    pythonboy123   等人的回答,总结答案如下:
append()效率高于+=
extend()等价于+=
并且学习到+=和+并不相同。
感谢。
最佳答案
2020-4-26 11:04:30
+=和extend是一样的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-4-26 11:01:56 | 显示全部楼层
+=效率好像会慢一些。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-26 11:04:30 | 显示全部楼层    本楼为最佳答案   
+=和extend是一样的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-26 11:21:32 | 显示全部楼层
看似是一样的,实际效率不一样。
先说append(),这个是最快的,直接在原列表尾部添加元素。
然后是 +=,这个是最慢的,他涉及到大量的复制操作,实际过程是把你增加的部分和原来的部分全部复制一遍然后连接成一个新的列表。在处理大量数据的时候效率较低,不建议使用。
最后是extend(),这个也不创建新列表,而是将一个列表中的所有元素连接在原列表的尾部。
综合来看,你要添加一个元素建议使用append(),一次性添加多个元素建议使用extend(),而+=在处理小量数据的时候较为方便,但是不建议养成习惯使用,因为效率较低。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-26 11:56:14 | 显示全部楼层
pythonboy123 发表于 2020-4-26 11:21
看似是一样的,实际效率不一样。
先说append(),这个是最快的,直接在原列表尾部添加元素。
然后是 +=, ...

+=和extend效率一样的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-26 12:02:51 | 显示全部楼层

不一样啊,+=要把原列表复制一遍,extend()就是直接连接
你可以用id()试一下,+=产生了一个新的列表地址,而extend()的列表地址不变
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-26 12:20:32 | 显示全部楼层
pythonboy123 发表于 2020-4-26 12:02
不一样啊,+=要把原列表复制一遍,extend()就是直接连接
你可以用id()试一下,+=产生了一个新的列表地址 ...

你怕不是在逗我
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-26 12:24:16 | 显示全部楼层
>>> a = [1,2,3]
>>> id(a)
2442975073480
>>> a = a + [4]
>>> id(a)
2442978182728
>>> a.extend([5,6])
>>> id(a)
2442978182728
>>> 
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-26 12:28:27 | 显示全部楼层

谁告诉你 a = a + [4] 等价于 a += [4] 的???
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-26 12:33:00 | 显示全部楼层
永恒的蓝色梦想 发表于 2020-4-26 12:28
谁告诉你 a = a + [4] 等价于 a += [4] 的???

哦。。+=确实和extend()一样,是+不一样,我搞错了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-26 20:47

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表