当前位置: 首页 > news >正文

【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]
http://www.xdnf.cn/news/1062505.html

相关文章:

  • 结构体的嵌套问题
  • FPGA基础 -- Verilog 的属性(Attributes)
  • python+uniapp基于微信小程序的高校二手商品交易系统
  • Maven并行构建
  • 饼图:数据可视化的“切蛋糕”艺术
  • 大数据治理域——计算管理
  • windows清理系统备份文件夹WinSxS文件夹清理
  • 大数据Hadoop集群搭建
  • mysql server层做了什么
  • nginx的下载与安装 mac
  • 三种经典算法无人机三维路径规划对比(SMA、HHO、GWO三种算法),Matlab代码实现
  • 【Python】Excel表格操作:ISBN转条形码
  • RPC常见问题回答
  • Qwen3 Embedding 结构-加载-训练 看透模型设计哲学
  • windows查看占用端口的进程并杀死进程
  • phpstudy无法启动apache,80端口被占用,完美解决
  • 【MySQL篇10】:四种分库分表详解
  • Symbol.iterator 详解
  • Windows 10 防火墙 0x8007045b 打不开
  • Rust 项目文档生成之旅:cargo doc
  • 博士,超28岁,出局!
  • MySQL复杂查询优化实战:从多表关联到子查询的性能突破
  • 掌握Bash脚本编写:从服务启动脚本到语法精要
  • Xilinx XC7A12T‑1CPG238I Artix‑7 FPGA
  • SAM2论文解读-既实现了视频的分割一切,又比图像的分割一切SAM更快更好
  • 猿人学js逆向比赛第一届第九题
  • 基于物联网的智能衣柜系统设计
  • Redis如何解决缓存击穿,缓存雪崩,缓存穿透
  • .docx 和 .doc 都是 Word 文档格式的区别
  • 华为 FreeArc耳机不弹窗?