python 中list的extend()方法和append()方法的差异

list.extend()和list.append()方法都是在原list的后面添加新的元素,但两者有本质区别:

(1)list.append(A)

简单粗暴地将A作为一个整体加入list末尾,完全不管A究竟是什么,属于机械式添加,见下例:

a = [1,'2']
a.append(3)
a.append('3')
a.append([3])
a.append(['3'])
a.append('ab')
a.append({'c':32})
a.append((3,4))
print(a)
#输出:
[1, '2', 3, '3', [3], ['3'], 'ab', {'c': 32}, (3, 4)]

(2)list.extend(A)

list.extend()比list.append()要严格多了。完成该操作需要两大步骤:首先A必须是可迭代对象(iterable),然后执行B = list(A),即将A先转化成一个list,再把B中的所有元素全部拿出来挨个添加到list末尾(注意不是将整个列表B作为一个单一元素加在list末尾),见下例:

a = [1,'2']
a.extend(3)
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-447-55614e6313fa> in <module>
      1 a = [1,'2']
----> 2 a.extend(3)

TypeError: 'int' object is not iterable

企图用a.extend(3)将3添加到a末尾是行不通的,因为3不是可迭代对象,应该写成a.extend([3])

a = [1,'2']
a.extend([3]) 
[1, '2', 3]
解释:
A = [3]
B = list(A) =[3]
把3写入a的末尾
a = [1,'2']
a.extend('3')
[1, '2', '3']
解释:
A = '3'
B = list(A) =['3']
把'3'写入a的末尾
a = [1,'2']
a.extend('abcd') #特别注意
[1, '2', 'a', 'b', 'c', 'd']
解释:
A = 'abcd'
B = list(A) =[ 'a', 'b', 'c', 'd']
把 'a', 'b', 'c', 'd'写入a的末尾
a = [1,'2']
a.extend((3,4,5))
[1, '2', 3, 4, 5]
解释:
A = (3,4,5)
B = list(A) =[ 3, 4, 5]
把 3, 4, 5写入a的末尾
a = [1,'2']
a.extend({'age':23})
[1, '2', 'age']
解释:
A = {'age':23}
B = list(A) =['age']
把'age'写入a的末尾

可见,只要按照正确步骤解释,extend()也不会搞错。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容