04 列表基础
Python 列表基础
Python 列表(List)是一种有序、可变的数据结构,可以存储任意类型的元素(整数、字符串、对象等)。列表用方括号 [] 表示,元素之间用逗号 , 分隔,下方都是一些常见的列表。
| numbers = [1, 2, 3, 4, 5]
fruits = ["apple", "banana", "cherry"]
mixed = [1, "hello", True, 3.14]
|
列表的创建
列表可以通过以下几种方式创建:
- 直接定义列表:
- 使用
list() 函数转换可迭代对象,这个很方便的一个点就是可以直接将一个字符串拆开放:
| my_list = list("abc") # 结果为 ['a', 'b', 'c']
|
- 使用列表推导式:
| squares = [x**2 for x in range(5)] # 结果为 [0, 1, 4, 9, 16]
|
列表的索引和切片
Python 列表支持索引(从 0 开始)和切片操作:
索引访问:
| fruits = ["apple", "banana", "cherry"]
print(fruits[0]) # 输出 "apple"
print(fruits[-1]) # 输出 "cherry"(-1 表示最后一个元素)
|
切片操作(start:stop:step):
| numbers = [0, 1, 2, 3, 4, 5] # 切片操作是左闭右开的
print(numbers[1:4]) # 输出 [1, 2, 3]
print(numbers[:3]) # 输出 [0, 1, 2]
print(numbers[::2]) # 输出 [0, 2, 4]
print(numbers[::-1]) # 输出 [5, 4, 3, 2, 1, 0]
|
列表的常用方法
Python 列表提供了许多内置方法用于增删改查:
添加元素:
-
append():在末尾添加元素:
| fruits = ["apple", "banana", "cherry"]
fruits.append("orange") # ["apple", "banana", "cherry", "orange"]
|
如果想要直接合并两个列表,也可以使用+:
| list1 = [1,2,3]
list2 = [4,5,6]
list3 = list1 + list2 # + 代表的是连接关系
print(list3) # [1, 2, 3, 4, 5, 6]
|
如果想要重复列表,直接使用*:
| list1 = [1,2,3]
list2 = list1 * 3
print(list2) # [1, 2, 3, 1, 2, 3, 1, 2, 3]
|
-
extend():合并另一个列表:
| fruits = ["apple", "banana", "cherry", "orange"]
fruits.extend(["grape", "kiwi"]) # ["apple", "banana", "cherry", "orange", "grape", "kiwi"]
|
insert():在指定位置的前面插入:
| fruits = ["apple", "banana", "cherry", "orange", "grape", "kiwi"]
fruits.insert(1, "pear") # ["apple", "pear", "banana", "cherry", "orange", "grape", "kiwi"]
|
删除元素:
查找与统计:
index():返回元素的索引:
| fruits = ["apple", "banana", "cherry"]
print(fruits.index("banana")) # 输出 1
|
count():统计元素出现次数:
| numbers = [1, 2, 2, 3, 2]
print(numbers.count(2)) # 输出 3
|
排序与反转:
sort():排序(默认升序,可以添加 reverse 参数调整排序顺序):
| numbers = [3, 1, 4, 2]
numbers.sort() # [1, 2, 3, 4]
numbers.sort(reverse=True) # [4, 3, 2, 1]
|
reverse():反转列表顺序:
| numbers = [1, 2, 3, 4]
numbers.reverse() # [4, 3, 2, 1]
|
常见应用场景
遍历列表:使用 for 循环遍历列表:
| fruits = ["apple", "banana", "cherry"]
for fruit in fruits:
print(fruit,end=" ")
|
列表推导式:列表推导式(List Comprehension)提供了一种简洁的生成列表的方式,但是注意用[ ]包裹元素:
| # 生成 0 到 9 的平方列表
squares = [x**2 for x in range(10)] # [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
# 筛选偶数
evens = [x for x in range(10) if x % 2 == 0] # [0, 2, 4, 6, 8]
|
列表浅拷贝:列表是可变对象,直接赋值会导致引用传递(修改副本会影响原列表)。可以使用 copy() 或切片实现浅拷贝,以下展示两种不同的方式:
| original = [1, 2, 3]
copy1 = original.copy() # 通过copy实现浅拷贝
copy2 = original[:] # 通过切片进行浅拷贝
copy1[0] = "a" # 对副本进行修改并不影响初始列表original
copy2[0] = "b" # 对副本进行修改并不影响初始列表original
print(original)
print(copy1)
print(copy2)
|
| [1, 2, 3]
['a', 2, 3]
['b', 2, 3]
|
如果采用直接赋值的方式,就会出现以下问题:
| original = [1, 2, 3]
copy1 = original
copy1[0] = "a"
print(original) # 由于使用了显式赋值,因此修改copy1的时候也会影响原列表
print(copy1)
|
嵌套列表:列表可以包含其他列表,形成多维数据结构:
| matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
print(matrix[1][2]) # 输出 6,因为下标是从0开始的
|
Python 列表是一种灵活、功能丰富的数据结构,适用于各种数据处理场景。熟练掌握列表的创建、索引、方法、遍历和推导式,可以大大提高编程效率。