也谈python列表append和extend的区别
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了也谈python列表append和extend的区别相关的知识,希望对你有一定的参考价值。
关于append和extend两个方法,网上很多人说法如下:
append() 方法向列表的尾部添加一个新的元素。只接受一个参数。
extend()方法只接受一个列表作为参数,并将该参数的每个元素都添加到原有的列表中。
但是,关于extend只接受一个列表作为参数这种说法,深表怀疑。举个栗子:
extend >>>a= [1,2,3,4] >>> a.extend([‘a‘,‘b‘]) >>> a [1, 2, 3, 4, ‘a‘, ‘b‘] append >>> a.append([‘a‘,‘b‘]) >>> a [1, 2, 3, 4, ‘a‘, ‘b‘, [‘a‘, ‘b‘]]
ok,这样我们追加了一个列表是没有问题的,换个元组可以么?
append >>> a.append((1,2,3)) >>> a [1, 2, 3, 4, ‘a‘, ‘b‘, [‘a‘, ‘b‘], (1, 2, 3)] >>> a.extend((4,5,6)) >>> a [1, 2, 3, 4, ‘a‘, ‘b‘, [‘a‘, ‘b‘], (1, 2, 3), 4, 5, 6]
依然可以,元组也可以被extend接受,并且成功追加到list中,换字典呢?
extend >>> a.extend({1:‘a‘,2:‘b‘}) >>> a [1, 2, 3, 4, ‘a‘, ‘b‘, [‘a‘, ‘b‘], (1, 2, 3), 4, 5, 6, 1, 2] append >>> a.append({7:‘c‘,5:‘d‘}) >>> a [1, 2, 3, 4, ‘a‘, ‘b‘, [‘a‘, ‘b‘], (1, 2, 3), 4, 5, 6, 1, 2, {5: ‘d‘, 7: ‘c‘}]
这里我们可以发现些许不同,extend的方式扩展列表参数为字典时,被追加到列表中的只有key,value并没有被追加进去;但是使用append这种方式扩展时,将整个字典作为一个值追加到列表中了
ok,以上是可变对象,如果我们换成字符串呢?
extend >>> a.extend(‘123456‘) >>> a [1, 2, 3, 4, ‘a‘, ‘b‘, [‘a‘, ‘b‘], (1, 2, 3), 4, 5, 6, 1, 2, {5: ‘d‘, 7: ‘c‘}, ‘1‘, ‘2‘, ‘3‘, ‘4‘, ‘5‘, ‘6‘] append >>> a.append(‘123456‘) >>> a [1, 2, 3, 4, ‘a‘, ‘b‘, [‘a‘, ‘b‘], (1, 2, 3), 4, 5, 6, 1, 2, {5: ‘d‘, 7: ‘c‘}, ‘1‘, ‘2‘, ‘3‘, ‘4‘, ‘5‘, ‘6‘, ‘123456‘]
也是可以的。
总结:
1、append和extend都可以接受各种类型数据,但是extend参数为字典时,只会追加key到列表中。
2、append和extend都只接受一个参数
3、append接受一个参数,追加到列表中在尾部只添加一个元素,也就是说你参数是什么,列表中就追加成什么。
4、extend接受一个参数,追加到列表中时是将参数中的每一个值都追加到列表中(字典例外)
附加help信息
Help on built-in function extend:
extend(...) method of builtins.list instance
L.extend(iterable) -> None -- extend list by appending elements from the iterable
并没有说extend的参数必须是列表。
从可迭代的元素追加延长列表
以上纯属个人实验结果,如有大神有更好的解释,请多多解答,谢谢!
本文出自 “风之别鹤” 博客,谢绝转载!
以上是关于也谈python列表append和extend的区别的主要内容,如果未能解决你的问题,请参考以下文章
python=============python中的append() 和 extend()
python列表插入--append(), extend(), insert()