Python中的列表添加元素操作经常出现在代码中,添加元素的常用方法有三种:append、extend和'+='操作。本博文主要梳理三种方法如何使用。之所以写本博文,是因为在列表生成式无法提取数组元素。在本博文最后列举列表生成式出现的错误例子代码。。查阅网络一些资料,现将自己的理解梳理一下,仅供参考,如果有描述不清晰或错误之处,请批评指正。
目录
一、append()函数操作
二、extend()函数和'+='运算符
三、insert()函数
四、列表生成式举例
一、append()函数操作
append函数将元素追加到列表的尾部,每次只能追加一个元素(元素可以为列表、元组等)。追加元素可以直接写入,append()函数中的元素外加[],表示该元素为数组,会将[]直接写入列表中与后面讲述的extend方法不同。追加多个元素需变成列表形式,将该元素列表写入原列表尾部。示例代码如下:
list = [1,2,3]
list.append('a')
#list: [1, 2, 3, 'a']
list.append(['a'])
#list: [1, 2, 3, 'a', ['a']]
list.append(['b','c'])
#list: [1, 2, 3, 'a', ['a'], ['b', 'c']]
二、extend()函数和'+='运算符
列表的extend()函数也是将元素添加到列表尾部,添加元素与append函数略微区别是添加的[]会被删除。添加元素数组,需要添加2层方括号,添加一层[]时,函数会将数组中元素作为独立元素写入列表中。extend函数与'+='运算符等价。示例代码与上面append书写方式一样,但结果略有不同。
list = [1,2,3]
list.extend('a')
#list: [1, 2, 3, 'a']
list.extend(['a'])
#list: [1, 2, 3, 'a', 'a']
list.extend(['b','c'])
#list: [1, 2, 3, 'a', 'a', 'b', 'c']
#添加数组需添加2层[]
list.extend([['b','c']])
#list: [1, 2, 3, 'a', 'a','b', 'c', ['b', 'c']]
将示例代码用'+='符号操作一遍,结果与extend函数相同
list = [1,2,3]
list += 'a'
#list: [1, 2, 3, 'a']
list += ['a']
#list: [1, 2, 3, 'a', 'a']
list += ['b','c']
#list: [1, 2, 3, 'a', 'a', 'b', 'c']
#添加数组需添加2层[]
list += [['b','c']]
#list: [1, 2, 3, 'a', 'a', 'b', 'c', ['b', 'c']]
三、insert()函数
list.insert(self,index,object)函数中的index参数表示插入的索引位置,实际插入位置为index参数指示位置的前一个位置。object参数为插入的实参值。insert函数的示例代码:
list = [1,2,3]
list.insert(0,'a')
#list: ['a', 1, 2, 3]
list.insert(-1,['b'])
#list: ['a', 1, 2, ['b'], 3]
四、列表生成式错误举例
上文提到的三种方法都是将元素写入原列表,直接应用于列表生成式时无法提取元素会返回None,如果想在列表生成式中对列表末尾添加元素需要使用列表拼接的方式。
#本代码主要实现将单个数字添加到列表尾部,并生成新列表
list_1 = ['a','b','c']
new_list = [ list_1.append([i]) for i in range(3)]
#new_list: [None, None, None]
#修改后正确代码
list_1 = ['a','b','c']
list_1 = [ list_1+[i] for i in range(3)]
#list_1: [['a', 'b', 'c', 0], ['a', 'b', 'c', 1], ['a', 'b', 'c', 2]]