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()也不会搞错。
网友评论