【Python】List
列表简介
列表是由一系列按特定顺序排列的元素组成的序列,是Python 中最基本的数据结构之一。
1 定义一个List
List的元素可以是任意数据类型
bicycles = ['trek', 'cannondale', 'redline', 'specialized']
list1 = ['Google', 'Baidu', 1997, 2000]
list2 = [1, 2, 3, 4, 5 ]
list3 = ["a", "b", "c", "d"]
list4 = ['red', 'green', 'blue', 'yellow', 'white', 'black']
- list的元素可以是字典
# 创建一个包含字典元素的列表
list_with_dicts = [{"name": "Alice", "age": 25, "city": "New York"},{"name": "Bob", "age": 30, "city": "Paris"},{"name": "Charlie", "age": 35, "city": "London"}
]
- 确定列表长度
cars = ['bmw', 'audi', 'toyota', 'subaru']
len(cars)
2 查看列表元素(索引+切片)
list的元素是有序的,第一个元素序号为0,最后一个元素可以用序号-1输出;
2.1 通过索引查看列表中的元素
# 查看列表所有元素
print(bicycles)# 查看列表第一个元素
print(bicycles[0])
print(bicycles[0].title())# 查看其他元素
print(bicycles[1])
print(bicycles[3])# 倒序查看元素
print(bicycles[-1]) #最后一个元素
print(bicycles[-2]) #倒数第二个元素
print(bicycles[-3])message = f"My first bicycle was a {bicycles[0].title()}."
print(message)
2.2 通过切片查看列表元素
# 从第一位开始(包含)截取到倒数第二位(不包含)(前闭后开)
print(bicycles[0:-2])
2.3 列表元素排序后查看
2.3.1 sort方法排序:永久性修改,默认按字母顺序排列
cars = ['bmw', 'audi', 'toyota', 'subaru']
cars.sort()
print(cars)cars.sort(reverse=True)
print(cars)print("Here is the original list:")
print(cars)print("\nHere is the sorted list:")
print(sorted(cars))print("\nHere is the original list again:")
print(cars)
2.3.2 sorted方法(临时排序,实际顺序不变)
cars = ['bmw', 'audi', 'toyota', 'subaru']print("Here is the original list:")
print(cars)print("\nHere is the sorted list:")
print(sorted(cars))print("\nHere is the original list again:")
print(cars)
2.3.3 reverse()函数反向排序(永久性修改,再次调用可恢复)
cars = ['bmw', 'audi', 'toyota', 'subaru']
print(cars)cars.reverse()
print(cars) #cars.reverse()
print(cars) # cars = ['bmw', 'audi', 'toyota', 'subaru']
2.3.4 使用 reversed() 函数反向排序
reversed() 是临时排序,它不会直接修改原列表,而是返回一个反向迭代器(reverse iterator),可以通过将其转换为列表来获取倒序后的列表,而原列表保持不变。
cars = ['bmw', 'audi', 'toyota', 'subaru']# 使用 reversed() 函数获取反向迭代器
reversed_cars = reversed(cars) # 将反向迭代器转换为列表
reversed_cars_list = list(reversed_cars) print("原列表:", cars) # 原列表: ['bmw', 'audi', 'toyota', 'subaru']
print("倒序后的列表:", reversed_cars_list) # 倒序后的列表: ['subaru', 'toyota', 'audi', 'bmw']
2.3.5 手动倒序
cars = ['bmw', 'audi', 'toyota', 'subaru']# 手动倒序
reversed_cars = []
for car in cars:reversed_cars.insert(0, car)print("倒序后的列表:", reversed_cars)
2.4 使用循环输出
2.4.1 使用for循环输出
cars = ['bmw', 'audi', 'toyota', 'subaru']# 使用 for 循环遍历列表
for car in cars:print(car)
2.4.2 使用 for 循环和 range() 函数
cars = ['bmw', 'audi', 'toyota', 'subaru']# 使用 for 循环和 range() 函数遍历列表
for index in range(len(cars)):print(f"索引 {index}: {cars[index]}")
2.4.3 使用 for 循环和 enumerate() 函数
cars = ['bmw', 'audi', 'toyota', 'subaru']# 使用 for 循环和 enumerate() 函数遍历列表
for index, car in enumerate(cars):print(f"索引 {index}: {car}")
2.4.4 使用 while 循环
cars = ['bmw', 'audi', 'toyota', 'subaru']# 使用 while 循环遍历列表
index = 0
while index < len(cars):print(cars[index])index += 1
2.4.5 使用列表推导式
cars = ['bmw', 'audi', 'toyota', 'subaru']# 使用列表推导式遍历列表
[print(car) for car in cars]
2.4.6 使用 map() 函数
cars = ['bmw', 'audi', 'toyota', 'subaru']# 使用 map() 函数遍历列表
list(map(print, cars))
3 添加列表元素
3.1 使用 append() 方法在末尾添加单个元素
motorcycles = ['honda', 'yamaha', 'suzuki']
print(motorcycles)motorcycles.append('ducati')
print(motorcycles)
空列表初始化
motorcycles = []motorcycles.append('honda')
motorcycles.append('yamaha')
motorcycles.append('suzuki')print(motorcycles)
3.2 使用 extend() 方法添加多个元素
# 创建一个空列表
my_list = []# 添加多个元素
my_list.extend([1, 2, 3])
my_list.extend(("a", "b", "c"))print("使用 extend() 添加后的列表:", my_list)
3.3 使用 insert() 方法在指定位置插入元素
motorcycles = ['honda', 'yamaha', 'suzuki']
# 在list中序号为0的位置插入元素,其他元素位置右移(序号均加1)
motorcycles.insert(0, 'ducati')print(motorcycles)
3.4 使用 + 连接列表
# 创建一个空列表
my_list = []# 使用 + 运算符添加元素
my_list = my_list + [1, 2, 3]
my_list = my_list + ["a", "b", "c"] print("使用 + 运算符添加后的列表:", my_list) # [1, 2, 3, 'a', 'b', 'c']
3.5 使用列表推导式添加多个元素(适用于动态生成内容)
# 创建一个空列表
my_list = []# 使用列表推导式添加元素
my_list = [x * 2 for x in range(5)]print("使用列表推导式添加后的列表:", my_list) # [0, 2, 4, 6, 8]
3.6 添加列表中的列表(嵌套列表)
# 创建一个空列表
my_list = []# 添加嵌套列表
my_list.append([1, 2, 3])
my_list.append([4, 5, 6])
my_list.append([7, 8, 9])print("添加嵌套列表后的列表:", my_list)
3.7 应用:使用上面方法向列表中添加字典
- 1 使用 append() 方法添加字典
# 创建一个空列表
my_list = []# 添加字典到列表
my_list.append({"name": "Alice", "age": 25})
my_list.append({"name": "Bob", "age": 30})print("使用 append() 添加后的列表:", my_list)# [{'name': 'Alice', 'age': 25}, {'name': 'Bob', 'age': 30}]
- 2 使用 extend() 方法添加多个字典
# 创建一个空列表
my_list = []# 添加多个字典到列表
my_list.extend([{"name": "Alice", "age": 25}, {"name": "Bob", "age": 30}])print("使用 extend() 添加后的列表:", my_list)
- 3 使用列表推导式创建包含字典的列表
列表推导式是一种简洁的方法,用于生成包含字典的列表,特别是当字典的生成有某种规律时。
# 创建一个空列表
my_list = []# 使用列表推导式添加字典
my_list = [{"name": f"Person{i}", "age": 20 + i} for i in range(3)]print("使用列表推导式添加后的列表:", my_list)
# [{'name': 'Person0', 'age': 20}, {'name': 'Person1', 'age': 21}, {'name': 'Person2', 'age': 22}]
- 4 使用 insert() 方法在指定位置插入字典
# 创建一个空列表
my_list = []# 在指定位置插入字典
my_list.insert(0, {"name": "Alice", "age": 25})
my_list.insert(1, {"name": "Bob", "age": 30})print("使用 insert() 添加后的列表:", my_list)
- 5 使用 + 运算符添加字典
# 创建一个空列表
my_list = []# 使用 + 运算符添加字典
my_list = my_list + [{"name": "Alice", "age": 25}, {"name": "Bob", "age": 30}]print("使用 + 运算符添加后的列表:", my_list)
- 6 添加嵌套字典(字典中包含列表)
# 创建一个空列表
my_list = []# 添加嵌套字典
my_list.append({"name": "Alice", "age": 25, "hobbies": ["reading", "hiking"]})
my_list.append({"name": "Bob", "age": 30, "hobbies": ["gaming", "cooking"]})print("添加嵌套字典后的列表:", my_list)
4 修改元素
4.1 修改指定索引位置的元素
直接通过索引访问列表中元素并赋新值。
motorcycles = ['honda', 'yamaha', 'suzuki']
print(motorcycles)motorcycles[0] = 'ducati'
print(motorcycles)
# 创建一个列表
my_list = [10, 20, 30, 40, 50]# 修改指定索引位置的元素
my_list[0] = 100 # 修改索引 0 处的元素
my_list[3] = 400 # 修改索引 3 处的元素print("修改后的列表:", my_list)
4.2 使用循环修改多个元素
# 创建一个列表
my_list = [1, 2, 3, 4, 5]# 使用循环修改多个元素
for i in range(len(my_list)):my_list[i] = my_list[i] * 10 # 将每个元素乘以 10print("修改后的列表:", my_list)
# [10, 20, 30, 40, 50]
4.3 修改列表中字典的值
如果列表中包含字典,可以通过索引访问字典,然后修改字典中的键值对。
# 创建一个包含字典的列表
my_list = [{"name": "Alice", "age": 25},{"name": "Bob", "age": 30}
]# 修改列表中字典的值
my_list[0]["age"] = 26 # 修改第一个字典中的 "age" 键对应的值
my_list[1]["name"] = "Robert" # 修改第二个字典中的 "name" 键对应的值print("修改后的列表:", my_list)
# [{'name': 'Alice', 'age': 26}, {'name': 'Robert', 'age': 30}]
4.4 修改嵌套列表中的元素
# 创建一个嵌套列表
my_list = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]# 修改嵌套列表中的元素
my_list[1][0] = 10 # 修改第二行第一列的元素
my_list[2][2] = 20 # 修改第三行第三列的元素print("修改后的嵌套列表:", my_list)
5 删除元素
5.1 使用del 语句删除
motorcycles = ['honda', 'yamaha', 'suzuki']
print(motorcycles)del motorcycles[0]
print(motorcycles)
motorcycles = ['honda', 'yamaha', 'suzuki']
print(motorcycles)del motorcycles[1]
print(motorcycles)
5.2. 使用pop方法删除
5.2.1 使用pop方法删除末尾元素(删除后可使用)
motorcycles = ['honda', 'yamaha', 'suzuki']
print(motorcycles)popped_motorcycle = motorcycles.pop()
print(motorcycles)
print(popped_motorcycle)
motorcycles = ['honda', 'yamaha', 'suzuki']last_owned = motorcycles.pop()
print(f"The last motorcycle I owned was a {last_owned.title()}.")
5.2.2 使用pop方法删除任意位置的元素(删除后可使用)
motorcycles = ['honda', 'yamaha', 'suzuki']
# 删除并弹出第一个元素
first_owned = motorcycles.pop(0)
print(f"The first motorcycle I owned was a {first_owned.title()}.")
5.3 使用remove删除列表中值为指定元素的第一个匹配项(只删除第一个指定的值,多次删除使用for循环)
motorcycles = ['honda', 'yamaha', 'suzuki', 'ducati']
print(motorcycles)too_expensive = 'ducati'
motorcycles.remove(too_expensive)
print(motorcycles)
#删除后使用删除的元素
print(f"\nA {too_expensive.title()} is too expensive for me.")
5.4 使用列表推导式删除
# 创建一个列表
my_list = [10, 20, 30, 40, 50]# 使用列表推导式删除元素
my_list = [x for x in my_list if x != 30] # 删除所有值为 30 的元素print("删除后的列表:", my_list )# [10, 20, 40, 50]