列表方法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]]
其他回答
追加“扩展”列表(在适当位置)仅一个项,传递单个对象(作为参数)。
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,
append()方法将单个项添加到列表末尾。
x = [1, 2, 3]
x.append([4, 5])
x.append('abc')
print(x)
# gives you
[1, 2, 3, [4, 5], 'abc']
extend()方法接受一个参数,一个列表,并将该参数的每个项附加到原始列表中。(列表被实现为类。“创建”列表实际上是实例化一个类。因此,列表具有对其进行操作的方法。)
x = [1, 2, 3]
x.extend([4, 5])
x.extend('abc')
print(x)
# gives you
[1, 2, 3, 4, 5, 'a', 'b', 'c']
从潜入Python。
附加与扩展
使用append,您可以附加一个扩展列表的元素:
>>> a = [1,2]
>>> a.append(3)
>>> a
[1,2,3]
如果要扩展多个元素,应使用extend,因为只能附加一个元素或一个元素列表:
>>> a.append([4,5])
>>> a
>>> [1,2,3,[4,5]]
这样就可以得到一个嵌套列表
相反,使用extend,可以像这样扩展单个元素
>>> a = [1,2]
>>> a.extend([3])
>>> a
[1,2,3]
或者,与append不同,一次扩展更多元素,而不将列表嵌套到原始列表中(这就是名称extend的原因)
>>> a.extend([4,5,6])
>>> a
[1,2,3,4,5,6]
使用两种方法添加一个元素
append和extend都可以在列表末尾添加一个元素,尽管append更简单。
追加1个元素
>>> x = [1,2]
>>> x.append(3)
>>> x
[1,2,3]
扩展一个元素
>>> x = [1,2]
>>> x.extend([3])
>>> x
[1,2,3]
正在添加更多元素。。。结果不同
如果您对多个元素使用append,则必须传递一个元素列表作为参数,您将获得一个NESTED列表!
>>> x = [1,2]
>>> x.append([3,4])
>>> x
[1,2,[3,4]]
相反,使用extend,您将传递一个列表作为参数,但您将获得一个包含未嵌套在旧元素中的新元素的列表。
>>> z = [1,2]
>>> z.extend([3,4])
>>> z
[1,2,3,4]
因此,如果有更多的元素,您将使用extend获得包含更多项目的列表。但是,附加一个列表不会向列表中添加更多元素,而是添加一个嵌套列表元素,您可以在代码输出中清楚地看到。
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]
以下两个片段在语义上是等价的:
for item in iterator:
a_list.append(item)
and
a_list.extend(iterator)
后者可能更快,因为循环是在C中实现的。
推荐文章
- 在Python中获取大文件的MD5哈希值
- 在Python格式字符串中%s是什么意思?
- 如何循环通过所有但最后一项的列表?
- 如何有效地清除std::queue ?
- python用什么方法避免默认参数为空列表?
- ValueError: numpy。Ndarray大小改变,可能表示二进制不兼容。期望从C头得到88,从PyObject得到80
- Anaconda /conda -安装特定的软件包版本
- 我在哪里调用Keras的BatchNormalization函数?
- 打印测试执行时间并使用py.test锁定缓慢的测试
- 插入一行到熊猫数据框架
- 要列出Pandas DataFrame列
- 在Django模型中存储电话号码的最佳方法是什么?
- 从导入的模块中模拟函数
- 滚动或滑动窗口迭代器?
- python的方法找到最大值和它的索引在一个列表?