append是把参数直接传给列表,如:
list=[1,2]
list.append(3)
list就会变成[1,2,3]
而如果list.append([3])
则结果就是[1,2,[3]]
extend的参数必须是列表,即list.extend(3)语法会存在错误
如list.extend([3]),输出结果也是[1,2,3]
而list.extend([[3]])的话,输出结果则是[1,2,[3]]
可以把extend当作是去中括号的运算,并且只去掉一个中括号;不过一般人们都解释是把列表里的值添加到最后,也就是去掉最外面的括号就是它的值
append是原原本本的复制到后面去
所以二者之间是可以相互转化的
append(list)和extend([list])结果是相同的
那有趣的例子来了
list=[1]
list.append(list)和list.extend(list)结果会是什么?有什么区别?
大家可以先行尝试和思考,我把答案放在回复里
不知道为什么评论提交没有反应。。
答案就直接放在下面了
list=[1]
list.append(list)
结果是list=[1,[...]]
[...]这个是什么意思?
假如我们试着输出一下
print(list[1])
结果依旧是list=[1,[...]]
list[2]是不存在的,list[1][1]的结果依然
看到这里大家可能就会受到启发,可以先再作思考然后再看答案
[...]表示的内容是list
list.append(list)的意思是,把list添加到list的尾部,然而后一个list会不断修正前一个list,所以list[1][1][1]不论有几个[1],输出结果都是一样的
就像那句”从前有座山,山里有座庙,庙里有个小和尚在看报。小和尚看的内容是:从前有座山..."
因此在给list添加list值的时候尤其需要注意,如:
list=[1]
list1=[]
for i in range(10):
list[0]+=1
list1.append(list)
产生的结果是,list1里的值全部是[10],而如果append的内容是list[0]则就不会。所以二维数组的添加就可以拆分成每个元素里的两个数的添加