#本文纯菜鸟,所有博客为个人学习记录所用。不对的地方希望大家多多指教。
首先,先看一下help文档中对append()和extend()的说明。
L.extend(iterable) -> None - - extend list by appending elements from the iterable
L.append(object) -> None - - append object to end
①二者都只能接受一个参数,并且返回值都是None。和str的replace()等方法不同。
②extend的参数必须是‘iterable’。‘iterable’是‘可迭代’的意思,我关于‘迭代’还没有深入学习。目前知道可迭代的数据类型包括:str, tuple, list, set。
因此,a.exntend(1)会报错,因为1是int型,不可迭代;而 a.extend('1')就是正确的,因为'1'时一个str,属于可迭代。
append的参数可以是任意类型的。
③extend对iterable进行遍历,将iterable中每一个元素按顺序添加至列表 L的末尾。
append将object作为一个整体加入列表 L的末尾。
示例:
#coding=gbk
a=[1,2,3]
b=[1,2,3]
c=a.extend(('a','g','s'))
d=b.append({'a':77,'asd':2929})
print('extend方法: ',a)
print('append方法: ',b)
print('c的值: ',c==None)
print('d的值: ',d==None)
结果:
exntend方法: [1,2,3,'a','g','s']
append方法: [1,2,3,{'asd':2929,'a':77}]
c的值: True
d的值: True
tuple的add()和update()两种方法的区别与append()和extend()的却别类似。
update()和extend()都会对参数(该必须是可迭代的)进行遍历,将每次迭代得到的单个元素加入。
add()和append()则将参数作(不要求参数时可迭代的)为一个整体加入。
#coding=gbk
a={1,2,3}
b=a
a.add('python')
print ('add方法:',a)
b.update('python')
print('update方法:',b)
结果
add方法:{1, 2, 3, ‘python’}
update方法:{1, 2, 3, 'python', 'h', 'y', 't', 'o', 'p', 'n'}
a的id: 5931416
b的id: 5931416
注意:b=a时,b与a的id相同。b.update('python')后的结果中出现了‘python’,这是因为a.add('python')已经修改了这个set。