【Python】List列表更新的四种常用方法

在 Python 中,list 是一种常用的数据结构,支持多种操作,比如 appendinsertupdate(实际上是通过索引直接修改)。以下是它们的区别和代码示例:


1. append

  • 作用:在列表的末尾添加一个元素。
  • 特点:只能添加到末尾,不能指定位置。
  • 时间复杂度:O(1)。

代码示例

my_list = [1, 2, 3]
my_list.append(4)  # 在列表末尾添加元素 4
print(my_list)     # 输出: [1, 2, 3, 4]

2. insert

  • 作用:在列表的指定位置插入一个元素。
  • 特点:可以指定插入的位置,插入位置后面的元素会向后移动。
  • 时间复杂度:O(n),因为需要移动元素。

代码示例

my_list = [1, 2, 3]
my_list.insert(1, 10)  # 在索引 1 的位置插入元素 10
print(my_list)         # 输出: [1, 10, 2, 3]

3. update(通过索引直接修改)

  • 作用:通过索引直接修改列表中某个位置的元素。
  • 特点:需要指定索引,且索引必须在列表的有效范围内。
  • 时间复杂度:O(1)。

代码示例

my_list = [1, 2, 3]
my_list[1] = 20  # 将索引 1 的元素修改为 20
print(my_list)   # 输出: [1, 20, 3]

在 Python 的 list 中,除了 appendinsert 和通过索引直接修改(update)之外,还有一些其他常用的方法可以实现类似的功能。以下是这些方法的介绍和代码示例:


4. extend

  • 作用:将一个可迭代对象(如列表、元组、字符串等)的所有元素添加到列表的末尾。
  • 特点:可以一次性添加多个元素。
  • 时间复杂度:O(k),其中 k 是被添加的可迭代对象的长度。

代码示例

my_list = [1, 2, 3]
my_list.extend([4, 5])  # 将列表 [4, 5] 添加到末尾
print(my_list)          # 输出: [1, 2, 3, 4, 5]

总结对比:

操作作用特点时间复杂度
append在列表末尾添加元素只能添加到末尾O(1)
insert在指定位置插入元素可以指定位置,后面的元素会移动O(n)
update修改指定位置的元素需要指定索引,直接覆盖原值O(1)
extend添加多个元素到列表末尾可以一次性添加多个元素O(k)

综合代码示例:

# 初始化列表
my_list = [1, 2, 3]

# 使用 append
my_list.append(4)
print("After append:", my_list)  # 输出: [1, 2, 3, 4]

# 使用 insert
my_list.insert(1, 10)
print("After insert:", my_list)  # 输出: [1, 10, 2, 3, 4]

# 使用 update
my_list[2] = 20
print("After update:", my_list)  # 输出: [1, 10, 20, 3, 4]

关于list的其他一些常用功能方法:

1. del 语句

  • 作用:通过索引或切片删除列表中的元素。
  • 特点:可以直接删除某个元素或某个范围的元素。
  • 时间复杂度:O(n),因为可能需要移动元素。

代码示例

my_list = [1, 2, 3, 4, 5]
del my_list[1]      # 删除索引 1 的元素
print(my_list)      # 输出: [1, 3, 4, 5]

del my_list[1:3]    # 删除索引 1 到 2 的元素
print(my_list)      # 输出: [1, 5]

2. + 运算符

  • 作用:通过 + 运算符将两个列表合并,生成一个新的列表。
  • 特点:不会修改原列表,而是返回一个新的列表。
  • 时间复杂度:O(n + m),其中 n 和 m 是两个列表的长度。

代码示例

my_list = [1, 2, 3]
new_list = my_list + [4, 5]  # 合并两个列表
print(new_list)              # 输出: [1, 2, 3, 4, 5]
print(my_list)               # 原列表不变,输出: [1, 2, 3]

3. * 运算符

  • 作用:通过 * 运算符将列表重复多次,生成一个新的列表。
  • 特点:不会修改原列表,而是返回一个新的列表。
  • 时间复杂度:O(n * k),其中 n 是列表的长度,k 是重复的次数。

代码示例

my_list = [1, 2]
new_list = my_list * 3  # 将列表重复 3 次
print(new_list)         # 输出: [1, 2, 1, 2, 1, 2]
print(my_list)          # 原列表不变,输出: [1, 2]

4. slice 切片操作

  • 作用:通过切片操作可以修改列表的某一部分。
  • 特点:可以一次性修改多个元素。
  • 时间复杂度:O(k),其中 k 是切片操作涉及的元素数量。

代码示例

my_list = [1, 2, 3, 4, 5]
my_list[1:3] = [20, 30]  # 将索引 1 到 2 的元素替换为 [20, 30]
print(my_list)           # 输出: [1, 20, 30, 4, 5]

5. remove

  • 作用:删除列表中第一个匹配的元素。
  • 特点:需要指定元素的值,如果元素不存在会抛出 ValueError
  • 时间复杂度:O(n),因为需要遍历列表。

代码示例

my_list = [1, 2, 3, 2]
my_list.remove(2)  # 删除第一个值为 2 的元素
print(my_list)     # 输出: [1, 3, 2]

6. pop

  • 作用:删除并返回指定索引位置的元素(默认删除最后一个元素)。
  • 特点:可以指定索引,如果不指定索引则删除最后一个元素。
  • 时间复杂度:O(1)(删除末尾元素)或 O(n)(删除中间元素)。

代码示例

my_list = [1, 2, 3, 4]
popped_value = my_list.pop(1)  # 删除索引 1 的元素
print("Popped value:", popped_value)  # 输出: 2
print("List after pop:", my_list)     # 输出: [1, 3, 4]

7. clear

  • 作用:清空列表中的所有元素。
  • 特点:直接修改原列表,使其变为空列表。
  • 时间复杂度:O(1)。

代码示例

my_list = [1, 2, 3]
my_list.clear()  # 清空列表
print(my_list)   # 输出: []

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

魔都吴所谓

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值