Python中的append()、add()、extend()、update()用法详解

列表

在列表中,append函数用于向列表的末尾添加一个元素。例如:

my_list = [1, 2, 3]
my_list.append(4)
print(my_list) # [1, 2, 3, 4]

需要注意的是,append函数只能添加一个元素,如果要添加多个元素,可以使用extend函数或者使用加号运算符

my_list = [1, 2, 3]
my_list.extend([4, 5])
print(my_list) # [1, 2, 3, 4, 5]

my_list = [1, 2, 3]
my_list += [4, 5]
print(my_list) # [1, 2, 3, 4, 5]

集合

在集合中,append函数并不存在。如果要向集合中添加元素,可以使用add函数

my_set = {1, 2, 3}
my_set.add(4)
print(my_set) # {1, 2, 3, 4}

需要注意的是,集合中的元素是无序且不重复的。如果要添加多个元素,可以使用update函数

my_set = {1, 2, 3}
my_set.update([3, 4])
print(my_set) # {1, 2, 3, 4}

字典

在字典中,也不存在append函数。如果要向字典中添加键值对,可以直接使用下标运算符

my_dict = {'a': 1, 'b': 2}
my_dict['c'] = 3
print(my_dict) # {'a': 1, 'b': 2, 'c': 3}

需要注意的是,如果键已经存在于字典中,则会更新对应的值;如果键不存在,则会添加新的键值对。

DataFrame

DataFrame是Pandas库中的一种数据结构,用于存储二维表格数据。在DataFrame中,也不存在append函数。如果要向DataFrame中添加行,可以使用append方法

import pandas as pd

df = pd.DataFrame({'A': [1, 2], 'B': [3, 4]})
new_row = pd.Series({'A': 5, 'B': 6})
df = df.append(new_row, ignore_index=True)
print(df)
""""
输出结果为:

   A  B
0  1  3
1  2  4
2  5  6
"""

需要注意的是,append方法不会修改原始的DataFrame,而是返回一个新的DataFrame。如果要修改原始的DataFrame,需要将结果赋值回去。

此外,append方法还支持添加多行数据:

import pandas as pd

df = pd.DataFrame({'A': [1, 2], 'B': [3, 4]})
new_rows = pd.DataFrame({'A': [5, 7], 'B': [6, 8]})
df = df.append(new_rows, ignore_index=True)
print(df)
"""
输出结果为:

   A  B
0  1  3
1  2  4
2  5  6
3  7  8
"""

如果要向DataFrame中添加列,可以直接使用下标运算符

import pandas as pd

df = pd.DataFrame({'A': [1, 2], 'B': [3, 4]})
df['C'] = [5, 6]
print(df)
"""
输出结果为:
   A  B  C
0  1  3  5
1  2  4  6
"""

在Python中,在不同数据结构中,可能需要使用不同的函数或方法来添加元素。

### 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 | 两个均为列表 | 新建的列表实例 | ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值