32、列表常见操作

小白量化 2025-12-09 16:11:15 52 举报

1、列表常见操作

1.1 添加元素
(1)append(元素):在列表末尾追加一个元素。

# 示例
li = [1, 2, 3]
li.append(4)
li.append("bingbing")
li.append([1, 2, 3])
print(li)

(2)extend(可迭代对象):将一个可迭代对象中的所有元素逐一添加到列表末尾。

# 示例
li = [1, 2, 3]
# li.extend(4)    # TypeError: 'int' object is not iterable
li.extend("xiaobai")   # 拆分成一个个字符再逐一放入列表
li.extend([1, 2, 3, 44, 555])     # 拆分成一个个元素再逐一放入列表
print(li)

(3)insert(索引位置, 元素):在列表的指定位置插入一个新的元素。

# 示例
li = [1, 2, 3]
li.insert(1, 8)   # 在索引1的位置插入元素8
li.insert(9, 4)   # 如果仅仅是在列表的末尾添加元素,通常推荐使用append方法,效率更高。
print(li)

1.2 修改元素
列表[索引] = 新值

# 示例
li = [11, 22, 33]
li[1] = 88    # 修改索引1的元素为88
# li[9] = 44      # IndexError: list assignment index out of range
print(li)

1.3 查找元素
(1) in:检查一个元素是否存在于列表中。如果存在则返回True;否则返回False。
(2)not in:检查一个元素是否不存在于列表中。如果不存在则返回True;否则返回False。

# 示例1
name = ["xiaobai", "susu", "maiya", "ziyi"]
print("bingbing" in name)    # True
print("i" in name)           # False
print("hahha" not in name)   # True
# 示例2
# 需求:用户输入名字作为昵称,昵称重复则不能使用。
# 假设这是已经存在的昵称列表
names = ["xiaobai", "chengzi", "qingyan", "xuemiao"]
# 循环次数未知,但结束条件(昵称不重复)已知   ==》  while True + break
while True:
   # 用户输入名字作为昵称  ==》  input()
   name = input("请输入昵称:")
   # 判断昵称是否重复  ==》  判断用户输入的昵称 是否存在于 昵称列表
   if name in names:
       print("昵称已经存在!")
       # 重新输入
       # 重新判断
   else:
       print("昵称不存在!")
       # 将用户输入的昵称保存到昵称列表中
       names.append(name)
       print(names)
       # 退出循环
       break

(3)index(元素, 起始索引, 结束索引):查找列表中某个元素值第一次出现的索引(位置)。如果元素不存在于列表中,则抛出异常ValueError。

# 示例
fruits = ["apple", "banana", "cherry", "apple"]
# 基本使用
print(fruits.index("cherry"))   # 2
print(fruits.index("apple"))    # 0
print(fruits.index("pear"))   # ValueError: 'pear' is not in list

# 使用 start 参数
print(fruits.index("apple", 1))  # 3

# 使用 start 和 stop 参数,遵循包前不包后规则
print(fruits.index("apple", 1, 3))   # ValueError: 'apple' is not in list

(4) count(元素):统计某个元素在列表中出现的次数。

# 示例
fruits = ["apple", "banana", "cherry", "apple"]
print(fruits.count("cherry"))   # 1
print(fruits.count("apple"))    # 2
print(fruits.count("pear"))       # 0

1.4 删除元素
(1)del【公共操作】:根据索引删除列表中的元素,如果尝试删除一个不存在的索引对应的元素,则抛出异常IndexError

# 示例1
fruits = ["apple", "banana", "cherry", "apple"]
# 根据下标删除指定的元素
del fruits[1]
# del fruits[9]    # IndexError: list assignment index out of range
print(fruits)
fruits = ["apple", "banana", "cherry", "apple"]
# 删除整个列表
del fruits
print(fruits)    # NameError: name 'fruits' is not defined
# 示例2
name = "xiaobai"
del name
print(name)    # NameError: name 'name' is not defined

(2)remove(元素):移除列表中第一个匹配指定值的元素。如果列表中不存在该元素,则抛出异常ValueError。

# 示例1
li = [1, 2, 3, 2, 3]
# 删除存在的元素
li.remove(2)
# 删除不存在的元素
li.remove(9)    # ValueError: list.remove(x): x not in list
print(li)
# 示例2
li = [2, 2, 2]
for i in li:
   if i == 2:
       li.remove(i)
print(li)
# 第一次循环 i = 2  ==>  li.remove(2)  ==>  [2, 2]
# 第二次循环 i = 2  ==>  li.remove(2)  ==>  [2]
# 反向删除元素
# 通过下标反向遍历列表
# 求列表长度 len()
# print(len(li))
# 最大下标:len(li)-1   最小下标 0
li = [2, 2, 2]
for i in range(len(li)-1, -1, -1):   # 2     1    0
   if li[i] == 2:
       li.remove(li[i])
print(li)

1.5 排序
(1)sort(key=None, reverse=False):对列表中的元素进行排

# 示例
li = [1, 5, 9, 8, 7, 6, 3]
li.sort()
print(li)
li.sort(reverse=True)    # 降序排列
print(li)

(2)reverse():就地反转列表中的元素顺序

# 示例
li = [1, 5, 9, 8, 7, 6, 3]
li.reverse()
print(li)

1.6 列表推导式
(1)含义
是一种简洁的快速构建列表的方式
(2)语法格式
[表达式 for 变量 in 可迭代对象 if 条件]

# 示例1
li = []
for i in range(1, 6):
   li.append(i)
print(li)

print([i for i in range(1, 6)])
# 示例2
li = [11, 22, 33]
li2 = []
for i in li:
    li2.append(i*5)
print(li2)

print([i * 5 for i in li])
# 示例3
li = [11, 22, 33, 44, 55, 66, 77, 88, 99, 100]
li2 = []
for i in li:
    if i < 66:
        li2.append(i)
print(li2)

print([i for i in li if i < 66])

1.7 列表嵌套
列表中包含列表

# 示例
li = [[1, 2, 3], 4, 5, 6]
print(li[0])    # [1, 2, 3]
print(li[0][2])

li = [1, [2, [4, 5], [7, [8, 0], 9]], 2, 3, 4]
print(li[1])
print(li[1][2])
print(li[1][2][1])
print(li[1][2][1][0])


量化小白,从0开始学量化! 1

著作权归文章作者所有。 未经作者允许禁止转载!

最新回复 ( 0 )
发新帖
0