append()
和extend()
这两个列表方法有什么不同?
append()
和extend()
这两个列表方法有什么不同?
这相当于使用 +
运算符的 append
和 extend
:
>>> x = [1,2,3]
>>> x
[1, 2, 3]
>>> x = x + [4,5,6] # Extend
>>> x
[1, 2, 3, 4, 5, 6]
>>> x = x + [[7,8]] # Append
>>> x
[1, 2, 3, 4, 5, 6, [7, 8]]
append():它通常用于Python中添加一个元素。
示例1:
>> a = [1, 2, 3, 4]
>> a.append(5)
>> print(a)
>> a = [1, 2, 3, 4, 5]
示例2:
>> a = [1, 2, 3, 4]
>> a.append([5, 6])
>> print(a)
>> a = [1, 2, 3, 4, [5, 6]]
extend(): 用于合并两个列表或将多个元素插入一个列表中。
示例1:
>> a = [1, 2, 3, 4]
>> b = [5, 6, 7, 8]
>> a.extend(b)
>> print(a)
>> a = [1, 2, 3, 4, 5, 6, 7, 8]
示例2:
>> a = [1, 2, 3, 4]
>> a.extend([5, 6])
>> print(a)
>> a = [1, 2, 3, 4, 5, 6]
追加操作一次性添加全部数据。整个数据将被添加到新创建的索引中。另一方面,extend
(如其名称所示)扩展当前的数组。
例如:
list1 = [123, 456, 678]
list2 = [111, 222]
使用 append
,我们得到:
result = [123, 456, 678, [111, 222]]
在使用extend
时,我们得到:
result = [123, 456, 678, 111, 222]
有一个有趣的观点被暗示,但并没有解释,那就是extend比append更快。任何内部含有append的循环都应该用list.extend(processed_elements)来代替。
请记住,添加新元素可能会导致整个列表在内存中移到更好的位置上。如果这样做几次,因为我们一次只附加一个元素,整体性能会受到影响。从这个意义上讲,list.extend类似于"".join(stringlist)。
一本英语词典定义了append
和extend
的含义为:
append
: 把(某物)添加到书面文件的末尾。
extend
: 扩大。增加或扩展
有了这个知识,现在让我们来理解
1)append
和extend
之间的区别
append
:
extend
:
list(iterable)
而产生的。2)append
和extend
之间的相似之处
None
。示例
lis = [1, 2, 3]
# 'extend' is equivalent to this
lis = lis + list(iterable)
# 'append' simply appends its argument as the last element to the list
# as long as the argument is a valid Python object
list.append(object)
Info
,以下情况不适合使用extend
方法:在 for
循环中每次生成一个 Info
对象并使用 extend
将其存储到列表中时,它会失败。异常如下所示:
但如果您使用TypeError: 'Info' object is not iterable
append
方法,则结果是可以的。因为每次使用extend
方法,它总会将其视为列表或任何其他集合类型,迭代它,并将其放置在前一个列表之后。显然,无法迭代一个具体的对象。l1 = ['a', 'b', 'c']
l2 = ['d', 'e', 'f']
l1.append(l2)
l1
['a', 'b', 'c', ['d', 'e', 'f']]
这就像l1
在她的身体内部再次产生一个身体(嵌套)。
# Reset l1 = ['a', 'b', 'c']
l1.extend(l2)
l1
['a', 'b', 'c', 'd', 'e', 'f']
就像两个分离的个体结婚并组建一个团结的家庭。
此外,我为您制作了一份详尽的清单方法备忘录供参考。
list_methods = {'Add': {'extend', 'append', 'insert'},
'Remove': {'pop', 'remove', 'clear'}
'Sort': {'reverse', 'sort'},
'Search': {'count', 'index'},
'Copy': {'copy'},
}
extend(L)
将给定列表 L
中的所有项添加到列表中以扩展列表。
>>> a
[1, 2, 3]
a.extend([4]) #is eqivalent of a[len(a):] = [4]
>>> a
[1, 2, 3, 4]
a = [1, 2, 3]
>>> a
[1, 2, 3]
>>> a[len(a):] = [4]
>>> a
[1, 2, 3, 4]
append
函数将列表(在原地)“扩展”一个元素,该元素是传递的单个对象。
extend
函数将列表(在原地)“扩展”为传递的对象包含的元素数量。
这可能会对str
对象有些许困惑。
append
将在末尾添加一个单个字符串项,而extend
将添加与该字符串长度相同的多个“单一”的'str'项。append
仍将在末尾添加一个单个'list'项,而extend
将添加与传递列表长度相同的多个'list'项。
def append_o(a_list, element):
a_list.append(element)
print('append:', end = ' ')
for item in a_list:
print(item, end = ',')
print()
def extend_o(a_list, element):
a_list.extend(element)
print('extend:', end = ' ')
for item in a_list:
print(item, end = ',')
print()
append_o(['ab'],'cd')
extend_o(['ab'],'cd')
append_o(['ab'],['cd', 'ef'])
extend_o(['ab'],['cd', 'ef'])
append_o(['ab'],['cd'])
extend_o(['ab'],['cd'])
产生:
append: ab,cd,
extend: ab,c,d,
append: ab,['cd', 'ef'],
extend: ab,cd,ef,
append: ab,['cd'],
extend: ab,cd,
在Python中,追加和扩展是其中一种可扩展性机制。
追加:将一个元素添加到列表的末尾。
my_list = [1,2,3,4]
要将新元素添加到列表中,我们可以使用以下方式的append方法。
my_list.append(5)
新元素添加的默认位置始终是在(长度+1)位置。
插入:插入方法被用来克服追加的限制。使用插入,我们可以明确地定义我们想要插入新元素的确切位置。
insert(index, object) 的方法描述符。它需要两个参数,第一个是我们想要插入元素的索引,第二个是元素本身。
Example: my_list = [1,2,3,4]
my_list[4, 'a']
my_list
[1,2,3,4,'a']
扩展:当我们想将两个或多个列表合并成一个列表时,这非常有用。如果没有扩展,如果我们想要连接两个列表,则结果对象将包含一个列表的列表。
a = [1,2]
b = [3]
a.append(b)
print (a)
[1,2,[3]]
a = [1,2]
b = [3]
a.extend(b)
print (a)
[1,2,3]
合并多个列表
a = [1]
b = [2]
c = [3]
a.extend(b+c)
print (a)
[1,2,3]