0%
Skip to content

列表

概念

有序的、可变的元素序列

创建

[]

python
empty_list = []
print(f"空列表: {empty_list}")  # 输出: 空列表: []

fruits = ["apple", "banana", "cherry"]
print(f"水果列表: {fruits}")  # 输出: 水果列表: ['apple', 'banana', 'cherry']

# 列表可以包含不同类型的元素
mixed_list = [1, "hello", 3.14, True, None, [10, 20]]
print(f"混合类型列表: {mixed_list}")  # 输出: 混合类型列表: [1, 'hello', 3.14, True, None, [10, 20]]

**list()**构造

python
# 将字符串转换为列表 (每个字符是一个元素)
char_list = list("Python")
print(f"字符串转列表: {char_list}")  # 输出: 字符串转列表: ['P', 'y', 't', 'h', 'o', 'n']

# 将元组转换为列表
tuple_example = (1, 2, 3)
tuple_to_list = list(tuple_example)
print(f"元组转列表: {tuple_to_list}")  # 输出: 元组转列表: [1, 2, 3]

# 将 range 对象转换为列表
range_list = list(range(5))  # range(5) 生成 0 到 4 的整数序列
print(f"range 转列表: {range_list}")  # 输出: range 转列表: [0, 1, 2, 3, 4]

# 将集合转换为列表 (注意:集合是无序的,转换后列表的顺序不确定)
set_example = {1, 3, 2}
set_to_list = list(set_example)
print(f"集合转列表 (顺序可能不同): {set_to_list}")  # 输出: 集合转列表 (顺序可能不同): [1, 2, 3] (或其它顺序)

访问和切片

参考字符串,都一样

增删改查

增加

append(element):末尾添加

python
my_list = [1, 2]
my_list.append(3)
print(f"append(3) 后: {my_list}")  # append(3) 后: [1, 2, 3]

insert(index, element): 在指定索引 index 处插入一个元素 element,原元素后移

python
my_list = [1, 2]
my_list.insert(1, 3)
print(f"append(3) 后: {my_list}")  # append(3) 后: [1, 3, 2]

+连接

python
list_x = [1, 2]
list_y = [3, 4]
list_z = list_x + list_y
print(f"list_z: {list_z}")  # list_z: [1, 2, 3, 4]

删除

remove(value): 删除列表中第一个出现的指定值 value。如果值不存在,会引发 ValueError

python
letters = ['a', 'b', 'c', 'b', 'd']
letters.remove('b')  # 删除第一个 'b'
print(f"remove('b') 后: {letters}")  # remove('b') 后: ['a', 'c', 'b', 'd']

pop([index]): 删除并返回指定索引 index 处的元素。如果省略 index,默认删除并返回列表末尾的元素。

python
letters = ['a', 'b', 'c', 'b', 'd']
letters.pop(1)  # 删除索引为1的元素
print(f"remove('b') 后: {letters}")  # remove('b') 后: ['a', 'c', 'b', 'd']
letters.pop()  # 删除最后一个元素
print(f"remove() 后: {letters}")  # remove() 后: ['a', 'c', 'b']

del 语句: 可以删除指定索引的元素,或删除切片选中的部分

python
items = ['x', 'y', 'z', 'p', 'q']
del items[1]  # 删除索引为 1 的元素
print(f"del items[1] 后: {items}")  # 输出: del items[1] 后: ['x', 'z', 'p', 'q']

del items[1:3]  # 删除索引 1 到 2 的元素
print(f"del items[1:3] 后: {items}")  # 输出: del items[1:3] 后: ['x', 'q']

del items[:]  # 删除全部元素
print(f"del items[:] 后: {items}")  # 输出: del items[:] 后: []

clear():清空list

python
items = ['x', 'y', 'z', 'p', 'q']

items.clear()
print(f"clear()后: {items}")  # clear()后: []

查询

list.index(obj, start=0, end=len(list))

  • obj (必需): 这是你想要在列表中查找的对象或元素。
  • start (可选): 指定搜索开始的索引位置。如果省略,默认从列表的开头(索引 0)开始搜索。
  • end (可选): 指定搜索结束的索引位置(不包含此索引本身)。如果省略,默认搜索到列表的末尾。
python
grades = ['A', 'B', 'C', 'B', 'A', 'B']

print(f"grades.index('B'):{grades.index('B')}")  # 1
print(f"grades.index('B'):{grades.index('B', 4, 6)}")  # 5

count() :统计个数

python
grades = ['A', 'B', 'C', 'B', 'A', 'B']
count_b = grades.count('B')
print(f"列表中 'B' 出现的次数: {count_b}") # 输出: 列表中 'B' 出现的次数: 3

修改

直接赋值

python
grades = ['A', 'B', 'C', 'B', 'A', 'B']

grades[0] = 'F'
print(grades)  # ['F', 'B', 'C', 'B', 'A', 'B']

其他

反转

  • .reverse():原地操作,直接修改,效率高
  • [::-1] :切片反转,会创建新的,需要重新赋值
python
my_list = [1, 2, 3, 4, 5]

# 反转
my_list.reverse()
print(my_list)  # [5, 4, 3, 2, 1]

# 切片反转
my_list = my_list[::-1]
print(my_list)  # [1, 2, 3, 4, 5]

排序

list.sort(key=None, reverse=False)

  • 原地操作,会修改原列表
  • 默认升序排序,reverse=False
  • key: 一个可选参数,指定一个只有一个参数的函数,该函数会作用于列表中的每个元素上,排序时会根据这个函数的返回值来进行比较。
python
my_list = [1, 2, 3, 4, 5]

# 排序
my_list.sort()
print(my_list)  # [1, 2, 3, 4, 5]

# 逆序
my_list.reverse()
print(my_list)  # [5, 4, 3, 2, 1]

# 逆序,指定key
list2 = ['apple', 'banana', 'orange', 'pear']
list2.sort(key=len)  # 按照字符串长度排序
print(list2)  # ['pear', 'apple', 'orange', 'banana]

new_list = sorted(iterable, key=None, reverse=False)

创建新的,不修改原list

python
my_list = [1, 2, 3, 4, 5]

# 逆序
my_list = sorted(my_list, reverse=True)
print(my_list)  # [5, 4, 3, 2, 1]

# 逆序,指定key
list2 = ['apple', 'banana', 'orange', 'pear']
list2 = sorted(list2, key=len, reverse=True)
print(list2)  # ['banana', 'orange', 'apple', 'pear']