公共操作-推导式(集合、列表、字典)

复制代码
 1 '''
 2 Python推导式(Comprehensions)是一种简洁而强大的语法,用于创建新的数据结构(如列表、集合和字典)或对现有数据结构进行转换。
 3 它可以使用更简单的方式完成迭代、筛选、映射等操作。
 4 
 5 '''
 6 # 1. 循环生成列表
 7 # 1.1 准备⼀个空列表
 8 list1 = []
 9 # 1.2 书写循环,依次追加数字到空列表list1中
10 i = 0
11 while i < 10:
12     list1.append(i)
13     i += 1
14 print(list1)  # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
15 
16 # 2. 列表推导式(List Comprehension)也叫列表⽣成式
17 # 列表推导式用于快速创建一个新的列表。其基本语法是将一个表达式放在方括号内,并添加一个可迭代对象的循环
18 '''
19 最佳实践:
20     1. 尽量保持列表推导式的简洁和可读性。
21     2. 可以在表达式中添加条件来过滤元素。
22     3. 避免在列表推导式中嵌套过多的循环或复杂的逻辑,以免影响可读性。
23 '''
24 # 2.1 创建一个包含0到9的平方数的列表
25 squares_list = [x ** 2 for x in range(10)]
26 print(squares_list)  # 输出: [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
27 
28 # 2.2 创建0-10的偶数列表
29 # ⽅法⼀: range()步⻓实现
30 my_list = [i for i in range(0, 9, 2)]
31 print(my_list)  # [0, 2, 4, 6, 8]
32 # 方法二: if 实现
33 my_list = [i for i in range(10) if i % 2 == 0]
34 print(my_list)  # [0, 2, 4, 6, 8]
35 # 2.3  多个for循环实现列表推导式,多个for用空格隔开,类似于for嵌套
36 # 需求:[(1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)]
37 my_list = [(i, j) for i in range(1, 3) for j in range(0, 3)]
38 print(my_list)
39 
40 # 3. 字典推导式(Dictionary Comprehension):用于快速创建一个新的字典。其语法类似于列表推导式,但需要指定键和值的表达式,并使用冒号 : 分隔键和值
41 '''
42 最佳实践:
43     1. 可以在键和值的表达式中添加条件来进行过滤或转换。
44     2. 在创建字典时,确保键的唯一性。
45 需要注意的坑:
46     1. 在使用推导式时,尽量避免过于复杂的表达式和逻辑,以免降低可读性。
47     2. 当数据量很大或计算复杂时,推导式可能会影响程序的性能。在这种情况下,应考虑使用传统的循环和条件语句。
48 '''
49 # 3.1 创建一个将0到9的数字映射为它们的平方的字典
50 my_dict = {x: x ** 2 for x in range(10)}
51 print(my_dict)  # 输出: {0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64, 9: 81}
52 '''
53 3.2 如下2个列表: 列表的长度肯定要一样
54 list1 = ['name', 'age', 'gender']
55 list2 = ['Tom', 20, 'man']
56 如何快速合并为⼀个字典?
57 '''
58 list1 = ['name', 'age', 'gender']
59 list2 = ['Tom', 20, 'man']
60 my_dict = {list1[i]: list2[i] for i in range(len(list1))}
61 print(my_dict)  # {'name': 'Tom', 'age': 20, 'gender': 'man'}
62 
63 # 3.3 利用if语句,提取字典中⽬标数据
64 counts = {'MBP': 268, 'HP': 125, 'DELL': 201, 'Lenovo': 199, 'acer': 99}
65 # 需求:提取上述电脑数量⼤于等于200的字典数据
66 count1 = {key: value for key, value in counts.items() if value >= 200}
67 print(count1)  # {'MBP': 268, 'DELL': 201}
68 
69 # 4. 集合推导式
70 '''
71 集合推导式用于快速创建一个新的集合。其语法与列表推导式相似,只是使用大括号 {} 而不是方括号 []
72 最佳实践:
73     1. 集合推导式可以用于去除重复的元素。
74     2. 与列表推导式一样,要保持简洁和可读性。
75 '''
76 my_list1 = [1, 1, 2]
77 set1 = {i ** 2 for i in my_list1}  # 特别注意其写法
78 print(set1)  # {1, 4}
79 # 创建一个包含1到10的平方数的集合
80 squares = {x ** 2 for x in range(1, 11)}
81 print(squares)  # 输出: {64, 1, 4, 36, 100, 9, 16, 49, 81, 25}
复制代码

 

posted @   Allen_Hao  阅读(18)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
点击右上角即可分享
微信分享提示