跳转至

Python 笔记 | 列表 list

在 Python 中,列表(list)是一种重要的数据结构,用于存储有序的元素集合。列表中的元素可以是任何类型,包括整数、浮点数、字符串、甚至是其他列表(即嵌套列表)。列表是可变的,意味着你可以添加、删除或修改其中的元素。

创建列表

你可以使用方括号 [] 来创建一个列表,元素之间用逗号 , 分隔。

Python
1
2
3
4
5
# 创建一个包含整数的列表
numbers = [1, 2, 3, 4, 5]

# 创建一个包含多种类型元素的列表
mixed_list = [1, 'apple', 3.14, True, [1, 2, 3]]

访问列表元素

你可以通过索引来访问列表中的元素。索引从 0 开始。

Python
1
2
3
4
5
# 访问列表中的第一个元素
print(numbers[0])  # 输出:1

# 访问列表中的最后一个元素(使用-1作为索引)
print(numbers[-1])  # 输出:5

修改列表元素

你可以通过索引来修改列表中的元素。

Python
1
2
3
# 修改列表中的第一个元素为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
1
2
3
4
5
# 访问列表中的第二个到第四个元素(不包括第五个)
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
1
2
3
# 创建一个包含 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
1
2
3
4
5
6
7
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] 这个表达式做了以下几件事情:

  1. 迭代for x in lst 遍历列表 lst 中的每一个元素,并将其值赋给变量 x
  2. 函数调用:对于 lst 中的每一个元素 x,都调用函数 square,并将 x 作为参数传递给它。
  3. 列表生成[ ... for x in lst] 的结构用于创建一个新的列表。这个新列表的每一个元素都是 square(x) 的返回值。
  4. 返回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)