Python 笔记 | 列表 list
在 Python 中,列表(list)是一种重要的数据结构,用于存储有序的元素集合。列表中的元素可以是任何类型,包括整数、浮点数、字符串、甚至是其他列表(即嵌套列表)。列表是可变的,意味着你可以添加、删除或修改其中的元素。
创建列表
你可以使用方括号 []
来创建一个列表,元素之间用逗号 ,
分隔。
Python |
---|
| # 创建一个包含整数的列表
numbers = [1, 2, 3, 4, 5]
# 创建一个包含多种类型元素的列表
mixed_list = [1, 'apple', 3.14, True, [1, 2, 3]]
|
访问列表元素
你可以通过索引来访问列表中的元素。索引从 0 开始。
Python |
---|
| # 访问列表中的第一个元素
print(numbers[0]) # 输出:1
# 访问列表中的最后一个元素(使用-1作为索引)
print(numbers[-1]) # 输出:5
|
修改列表元素
你可以通过索引来修改列表中的元素。
Python |
---|
| # 修改列表中的第一个元素为0
numbers[0] = 0
print(numbers) # 输出:[0, 2, 3, 4, 5]
|
添加和删除元素
- 添加元素:使用
append()
在列表末尾添加元素,或使用 insert()
在指定索引处插入元素。
- 删除元素:使用
remove()
根据值删除元素,或使用 pop()
根据索引删除元素(并返回该元素的值),也可以使用 del
语句来删除元素。
Python |
---|
| # 添加元素到列表末尾
numbers.append(6)
print(numbers) # 输出:[0, 2, 3, 4, 5, 6]
# 在指定索引处插入元素
numbers.insert(1, 1.5)
print(numbers) # 输出:[0, 1.5, 2, 3, 4, 5, 6]
# 删除元素
numbers.remove(2)
print(numbers) # 输出:[0, 1.5, 3, 4, 5, 6](注意,remove会删除第一个匹配的元素)
# 删除并返回指定索引的元素
deleted_element = numbers.pop(1)
print(deleted_element) # 输出:1.5
print(numbers) # 输出:[0, 3, 4, 5, 6]
# 使用del语句删除元素
del numbers[0]
print(numbers) # 输出:[3, 4, 5, 6]
|
列表切片
列表切片允许你访问列表的一个子序列。
Python |
---|
| # 访问列表中的第二个到第四个元素(不包括第五个)
print(numbers[1:4]) # 输出:[3, 4, 5]
# 反转列表(步长为-1)
print(numbers[::-1]) # 输出:[6, 5, 4, 3]
|
列表方法
Python的列表类型提供了许多有用的方法,如 sort()
用于排序列表, reverse()
用于反转列表, count()
用于计算某个元素出现的次数,以及 index()
用于查找某个元素第一次出现的索引等。
Python |
---|
| # 对列表进行排序
numbers.sort()
print(numbers) # 输出:[3, 4, 5, 6]
# 反转列表
numbers.reverse()
print(numbers) # 输出:[6, 5, 4, 3]
# 计算元素出现的次数
print(numbers.count(4)) # 输出:1
# 查找元素第一次出现的索引
print(numbers.index(5)) # 输出:1
|
列表推导式
列表推导式是 Python 中创建列表的一种简洁方式。
Python |
---|
| # 创建一个包含 0 到 9 的平方的列表
squares = [x**2 for x in range(10)]
print(squares) # 输出:[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
|
示例
假设我们有一个函数 square
,它接收一个数字作为输入并返回其平方:
Python |
---|
| def square(x):
return x ** 2
|
现在,如果我们有一个列表 lst
,并且我们想要创建一个新的列表,其中包含 lst
中每个元素的平方,我们可以这样做:
Python |
---|
| def square_all(lst):
return [square(x) for x in lst]
# 使用示例
numbers = [1, 2, 3, 4, 5]
squared_numbers = square_all(numbers)
print(squared_numbers) # 输出: [1, 4, 9, 16, 25]
|
在示例中 return [square(x) for x in lst]
这个表达式做了以下几件事情:
- 迭代:
for x in lst
遍历列表 lst
中的每一个元素,并将其值赋给变量 x
。
- 函数调用:对于
lst
中的每一个元素 x
,都调用函数 square
,并将 x
作为参数传递给它。
- 列表生成:
[ ... for x in lst]
的结构用于创建一个新的列表。这个新列表的每一个元素都是 square(x)
的返回值。
- 返回:
return
语句用于将新生成的列表作为函数的返回值。
最后,当我们调用 square_all(numbers)
时,我们得到了一个包含每个数字平方的新列表。
综合实践
Python |
---|
| # 列表 list(可变类型)
shopping_list = []
# 列表的加入 删除 更改
shopping_list.append("键盘")
shopping_list.append("键帽")
shopping_list.remove("键帽")
shopping_list.append("音响")
shopping_list.append("电竞椅")
shopping_list[1] = "硬盘"
print(shopping_list)
# 一些常用函数
item_price = [179, 80, 850]
min_item_price = min(item_price) # min
max_item_price = max(item_price) # max
sorted_item_price = sorted(item_price) # 返回排序后的列表,不改变原列表
print(min_item_price)
print(max_item_price)
print(sorted_item_price)
# 用列表推导式生成列表
# [expression for item in iterable]
# 其中,expression 是对每个 item 进行操作的表达式,item 是从 iterable 中提取的元素。
decreasing_sequence = [i for i in range(10, 0, -1)]
print(decreasing_sequence)
decreasing_sequence = [i**2 for i in range(10, 0, -1)] # 对 i 进行平方
print(decreasing_sequence)
|