python中append()、insert()和extend()的区别

1、append(obj)是在列表末尾添加一个对象(列表、元组、字典、字符串)整体,在列表中只占一个索引位。

li1=['a','e','f']
li2=['o','c']
li1.append(li2)
print(li1)
print('len=%d'%len(li1))
输出:['a', 'e', 'f', ['o', 'c']]
     len=4

2、insert(index,obj)可以指定插入对象(列表、元组、字典、字符串)的位置。

li1=['a','e','f']
li2=('a','b','c')
li1.insert(2,li2)
print(li1)
print('len=%d'%len(li1))
输出:['a', 'e', ('a', 'b', 'c'), 'f']
     len=4

3、extend(seq)是在原列表后追加新对象(可迭代序列:列表、元组、字典、字符串)中的每个元素。

li1=['a','e','f']
li2=['o','c']
li1.extend(li2)
print(li1)
print('len=%d'%len(li1))
输出:['a', 'e', 'f', 'o', 'c']
	 len=5

注:extend()操作对象为字典时,只添加key。

### Python中`append()`、`extend()``+`操作符的区别 #### 基本概念 - `append()` 是一种方法,用于将单个元素作为整体添加到列表的末尾。无论该元素的数据类型是什么,它都将被视作单一实体加入列表[^2]。 - `extend()` 同样是一种方法,但它接受一个可迭代对象,并将其内部的所有元素逐一追加到目标列表中[^4]。 - `+` 运算符则实现两个列表的连接操作,返回一个新的列表,而不修改原始列表的内容[^1]。 --- #### 行为差异分析 以下是三种方式的行为对比: ##### 1. **行为表现** 对于 `append()` 而言,如果传入的是一个列表,则整个列表会被当作单独的一个元素添加进去: ```python lst = [1, 2, 3] lst.append([4, 5]) print(lst) # 输出: [1, 2, 3, [4, 5]] ``` 相比之下,`extend()` 将把输入的可迭代对象拆解成其组成单元并逐项附加至现有列表上: ```python lst = [1, 2, 3] lst.extend([4, 5]) print(lst) # 输出: [1, 2, 3, 4, 5] ``` 至于 `+` 操作符,它是创建了一个全新的列表来容纳两部分组合的结果,不会改变原有的任一列表: ```python list1 = [1, 2, 3] list2 = [4, 5] new_list = list1 + list2 print(new_list) # 输出: [1, 2, 3, 4, 5] print(list1) # 输出: [1, 2, 3], 不变 ``` --- ##### 2. **性能考量** 从执行效率的角度来看,在处理大规模数据集时,不同方法的表现存在显著差别。具体而言,基于测试结果表明,当涉及到大量连续追加动作时,`extend()` 的速度最快,其次是 `append()` ,再次是简单的复制(`copy`)以及插入(`insert`)操作[^3]: 因此,在追求高性能的应用场合下,应优先考虑采用 `extend()` 来完成批量扩展需求;而对于仅需偶尔增添少量项目的情况来说,选用 `append()` 更显简洁明了。 另外值得注意的一点是,尽管 `+` 可以方便快捷地达成目的,但由于每次运算都需要重新分配内存空间给新的复合体,所以在频繁调用或者面对超大尺寸数组的时候可能会带来额外负担. --- ### 总结表格 | 特性/方法 | 修改原列表? | 输入参数要求 | 返回值 | |------------------|--------------------|---------------------|-------------------| | `append(item)` | Yes | 单个任意类型的元素 | None | | `extend(iterable)`| Yes | 一个可迭代的对象 | None | | `+ (concatenation)`| No | 两个均为列表 | 新建的列表实例 | ---
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值