liatanbo 发表于 2020-4-26 10:59:21

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

本帖最后由 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()等价于+=
并且学习到+=和+并不相同。
感谢。

qiuyouzhi 发表于 2020-4-26 11:01:56

+=效率好像会慢一些。

永恒的蓝色梦想 发表于 2020-4-26 11:04:30

+=和extend是一样的

pythonboy123 发表于 2020-4-26 11:21:32

看似是一样的,实际效率不一样。
先说append(),这个是最快的,直接在原列表尾部添加元素。
然后是 +=,这个是最慢的,他涉及到大量的复制操作,实际过程是把你增加的部分和原来的部分全部复制一遍然后连接成一个新的列表。在处理大量数据的时候效率较低,不建议使用。
最后是extend(),这个也不创建新列表,而是将一个列表中的所有元素连接在原列表的尾部。
综合来看,你要添加一个元素建议使用append(),一次性添加多个元素建议使用extend(),而+=在处理小量数据的时候较为方便,但是不建议养成习惯使用,因为效率较低。

永恒的蓝色梦想 发表于 2020-4-26 11:56:14

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

+=和extend效率一样的

pythonboy123 发表于 2020-4-26 12:02:51

永恒的蓝色梦想 发表于 2020-4-26 11:56
+=和extend效率一样的

不一样啊,+=要把原列表复制一遍,extend()就是直接连接
你可以用id()试一下,+=产生了一个新的列表地址,而extend()的列表地址不变

永恒的蓝色梦想 发表于 2020-4-26 12:20:32

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

你怕不是在逗我

pythonboy123 发表于 2020-4-26 12:24:16

永恒的蓝色梦想 发表于 2020-4-26 12:20
你怕不是在逗我

>>> a =
>>> id(a)
2442975073480
>>> a = a +
>>> id(a)
2442978182728
>>> a.extend()
>>> id(a)
2442978182728
>>>

永恒的蓝色梦想 发表于 2020-4-26 12:28:27

pythonboy123 发表于 2020-4-26 12:24


谁告诉你 a = a + 等价于 a += 的???

pythonboy123 发表于 2020-4-26 12:33:00

永恒的蓝色梦想 发表于 2020-4-26 12:28
谁告诉你 a = a + 等价于 a += 的???

哦。。+=确实和extend()一样,是+不一样,我搞错了
页: [1]
查看完整版本: [新手问题]Python列表append和extend和+=[]的区别是什么?