列表方法append()和extend()之间有什么区别?
当前回答
append在列表末尾附加指定的对象:
>>> x = [1, 2, 3]
>>> x.append([4, 5])
>>> print(x)
[1, 2, 3, [4, 5]]
extend通过从指定的iterable中附加元素来扩展列表:
>>> x = [1, 2, 3]
>>> x.extend([4, 5])
>>> print(x)
[1, 2, 3, 4, 5]
其他回答
以下两个片段在语义上是等价的:
for item in iterator:
a_list.append(item)
and
a_list.extend(iterator)
后者可能更快,因为循环是在C中实现的。
append(object)通过将对象添加到列表来更新列表。
x = [20]
# List passed to the append(object) method is treated as a single object.
x.append([21, 22, 23])
# Hence the resultant list length will be 2
print(x)
--> [20, [21, 22, 23]]
extend(list)本质上连接两个列表。
x = [20]
# The parameter passed to extend(list) method is treated as a list.
# Eventually it is two lists being concatenated.
x.extend([21, 22, 23])
# Here the resultant list's length is 4
print(x)
--> [20, 21, 22, 23]
append将元素添加到列表中。extend将第一个列表与另一个列表/可迭代列表连接起来。
>>> xs = ['A', 'B']
>>> xs
['A', 'B']
>>> xs.append("D")
>>> xs
['A', 'B', 'D']
>>> xs.append(["E", "F"])
>>> xs
['A', 'B', 'D', ['E', 'F']]
>>> xs.insert(2, "C")
>>> xs
['A', 'B', 'C', 'D', ['E', 'F']]
>>> xs.extend(["G", "H"])
>>> xs
['A', 'B', 'C', 'D', ['E', 'F'], 'G', 'H']
我希望我能对这个问题做一个有益的补充。如果您的列表存储了一个特定类型的对象,例如Info,这里有一种情况是extend方法不适合的:在for循环中,每次生成一个Info对象并使用extend将其存储到列表中,它将失败。例外情况如下:
TypeError:“Info”对象不可迭代
但如果使用append方法,结果是可以的。因为每次使用extend方法时,它都会将其视为列表或任何其他集合类型,对其进行迭代,并将其放在上一个列表之后。显然,特定的对象无法迭代。
追加“扩展”列表(在适当位置)仅一个项,传递单个对象(作为参数)。
extend将列表(就地)扩展到传递的对象(作为参数)所包含的项目。
对于str对象,这可能会有点混淆。
如果将字符串作为参数传递:append将在末尾添加一个字符串项,但extend将添加与该字符串长度相同的“单个”str项。如果将字符串列表作为参数传递:append仍将在末尾添加单个“列表”项,并且extend将添加与传递列表长度相同的“列表”项。
def append_o(a_list,元素):a_list.append(元素)打印('append:',end='')对于a_list中的项目:打印(项,结束=',')打印()def extend_o(a_list,元素):a_list.exextend(元素)打印('extend:',end='')对于a_list中的项目:打印(项,结束=',')打印()append_o(['ab'],'cd')扩展_ o([‘ab’],‘d’)append_o(['ab'],['cd','ef'])extend_o(['ab'],['cd','ef'])附加(['ab'],['cd'])扩展_ o([‘ab’],[‘cd’])
生产:
append: ab,cd,
extend: ab,c,d,
append: ab,['cd', 'ef'],
extend: ab,cd,ef,
append: ab,['cd'],
extend: ab,cd,
推荐文章
- 在每个列表元素上调用int()函数?
- 将Set<T>转换为List<T>的最简洁的方法
- 当使用代码存储库时,如何引用资源的相对路径
- 如何在Flask-SQLAlchemy中按id删除记录
- 在Python中插入列表的第一个位置
- 在javascript中从平面数组构建树数组
- Python Pandas只合并某些列
- 如何在一行中连接两个集而不使用“|”
- 从字符串中移除前缀
- 代码结束时发出警报
- 如何在Python中按字母顺序排序字符串中的字母
- 在matplotlib中将y轴标签添加到次要y轴
- 如何消除数独方块的凹凸缺陷?
- 为什么出现这个UnboundLocalError(闭包)?
- 使用Python请求的异步请求