一、列表简介
列表(list)是Python中的一种有序且可变的序列类型。它可以存储多个元素,并允许重复元素。列表中的元素可以是不同类型的数据,如整数、字符串、其他列表等。
创建列表
- 使用方括号[]创建列表。
- 使用list()构造函数将其他可迭代对象转换为列表。
# 方法1:使用方括号
fruits = ['apple', 'banana', 'orange']
# 方法2:使用list()构造函数
numbers = list([1, 2, 3, 4, 5])
empty_list = [] # 创建空列表
二、访问列表元素
索引访问
使用索引访问列表中的元素,索引从0开始。负索引可以从列表末尾开始访问。
fruits = ['apple', 'banana', 'orange']
print(fruits[0]) # 输出 'apple'
print(fruits[-1]) # 输出 'orange'
切片操作
可以对列表进行切片操作,返回一个新的列表。
numbers = [1, 2, 3, 4, 5]
print(numbers[1:4]) # 输出 [2, 3, 4]
print(numbers[:3]) # 输出 [1, 2, 3]
print(numbers[2:]) # 输出 [3, 4, 5]
print(numbers[::2]) # 输出 [1, 3, 5] (每隔一个元素)
三、列表的基本操作
添加元素
- 使用append()方法在列表末尾添加单个元素。
- 使用extend()方法在列表末尾添加多个元素(可以是另一个列表)。
- 使用insert()方法在指定位置插入元素。
fruits = ['apple', 'banana']
# 在末尾添加元素
fruits.append('orange')
# 添加多个元素
fruits.extend(['grape', 'mango'])
# 在指定位置插入元素
fruits.insert(1, 'pear')
删除元素
- 使用remove()方法删除指定值的第一个匹配项。
- 使用pop()方法删除并返回指定索引处的元素(默认删除最后一个元素)。
- 使用del语句删除指定索引或切片范围的元素。
fruits = ['apple', 'banana', 'orange']
# 删除指定值的元素
fruits.remove('banana')
# 删除并返回指定索引的元素
popped_fruit = fruits.pop(0)
# 删除指定索引或切片范围的元素
del fruits[0]
del fruits[1:3]
清空列表
使用clear()方法清空列表中的所有元素。
fruits.clear()
修改元素
直接通过索引修改列表中的元素。
fruits = ['apple', 'banana', 'orange']
fruits[1] = 'pear'
排序
使用sort()方法对列表进行原地排序,使用sorted()函数返回排序后的新列表。
numbers = [3, 1, 4, 1, 5, 9]
# 原地排序
numbers.sort()
# 返回排序后的新列表
sorted_numbers = sorted(numbers, reverse=True) # 降序排序
反转
使用reverse()方法反转列表中的元素顺序。
numbers = [1, 2, 3, 4, 5]
numbers.reverse()
print(numbers) # 输出 [5, 4, 3, 2, 1]
四、列表推导式
列表推导式是一种简洁的方式来创建列表。
squares = [x**2 for x in range(10)]
print(squares) # 输出 [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
even_numbers = [x for x in range(10) if x % 2 == 0]
print(even_numbers) # 输出 [0, 2, 4, 6, 8]
五、应用场景
1. 数据处理
用于存储和处理大量数据。
# 示例:计算平均分
grades = [85, 92, 78, 90, 88]
average_grade = sum(grades) / len(grades)
print(f"平均成绩: {average_grade}")
2. 用户输入处理
存储用户输入的一系列数据。
user_inputs = []
while True:
user_input = input("请输入一个数字 (输入 'done' 结束): ")
if user_input.lower() == 'done':
break
try:
number = float(user_input)
user_inputs.append(number)
except ValueError:
print("无效输入,请输入一个有效的数字")
print(f"您输入的数字: {user_inputs}")
3. 遍历和操作数据
结合循环和条件语句遍历和操作列表中的元素。
# 示例:找出列表中的最大值和最小值
numbers = [10, 20, 30, 40, 50]
max_value = max(numbers)
min_value = min(numbers)
print(f"最大值: {max_value}, 最小值: {min_value}")
# 示例:过滤出偶数
even_numbers = [x for x in numbers if x % 2 == 0]
print(f"偶数: {even_numbers}")
4. 模拟栈和队列
列表可以用作简单的栈(后进先出)和队列(先进先出)。
# 栈操作
stack = []
stack.append(1) # 入栈
stack.append(2)
stack.append(3)
print(stack.pop()) # 出栈,输出 3
# 队列操作
queue = []
queue.append(1) # 入队
queue.append(2)
queue.append(3)
print(queue.pop(0)) # 出队,输出 1
5. 多维列表
列表可以嵌套,形成多维列表(如矩阵)。
matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
# 访问二维列表元素
print(matrix[1][2]) # 输出 6
# 遍历二维列表
for row in matrix:
for element in row:
print(element, end=' ')
print()