列表
概念
有序的、可变的元素序列
创建
[]
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']