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}
标签:推导,list1,列表,range,print,my,字典 From: https://www.cnblogs.com/allenxx/p/17537340.html