Python中列表的append和extend方法有什么区别?
下面的命令中,append 会出错,但是 extend 没有问题,请问两种方法的区别何在呢?
>>> C=bytearray(b’xYam’)
>>> C.append(b’LMN’)
TypeError: an integer is required
>>> C.extend(b’MNO’)
>>> C
bytearray(b’xYamLMNO’)
Python中列表的append和extend方法有什么区别?
4 回复
你可以理解成
[1, 2, 3].append(4) = [1, 2, 3, 4]
[1, 2, 3].append([4]) = [1, 2, 3, [4]] // 或者报错,如果是 bytes 必须要求每个元素是一个整数
[1, 2, 3].extend([4]) = [1, 2, 3, 4]
[1, 2, 3].extend([4]) = Error 因为 4 不可迭代
append和extend都是用来给列表添加元素的方法,但处理方式完全不同。
append是把传入的整个对象作为一个新元素添加到列表末尾。无论你传什么进去,它都会变成列表里的一个独立项。
extend则是把传入的可迭代对象(比如列表、元组、字符串)拆开,将其中的每个元素依次添加到列表末尾。
看代码最直接:
my_list = [1, 2, 3]
# 使用 append
my_list.append([4, 5])
print(my_list) # 输出: [1, 2, 3, [4, 5]] # 整个列表被当成一个元素
# 使用 extend
my_list = [1, 2, 3] # 重置
my_list.extend([4, 5])
print(my_list) # 输出: [1, 2, 3, 4, 5] # 列表被拆开,元素被逐个添加
另一个例子:
lst = ['a', 'b']
lst.append('cde') # 结果: ['a', 'b', 'cde'] 字符串作为一个整体
lst = ['a', 'b']
lst.extend('cde') # 结果: ['a', 'b', 'c', 'd', 'e'] 字符串被拆成字符
简单说:append是“加一个盒子”,extend是“打开盒子加里面的东西”。根据你想加的是单个对象还是一组元素来选。
追加一个和追加一坨的区别


