【Python3】推导式

打印 上一主题 下一主题

主题 905|帖子 905|积分 2715

Python 推导式

参考文章:[1] (Python 推导式 | 菜鸟教程)
  1. Python推导式是一种独特的数据处理方式
  2. 可以从一个序列构建另一个新的数据序列的结构体
复制代码
1 列表推导式

1.1 基本格式
  1. [表达式 for 变量 in 列表]
  2. [表达式 for 变量 in 列表 if 条件]
  3. '''
  4. 1. 表达式
  5.     可以是具有返回值的函数
  6. 2. for 变量 in 列表
  7.     迭代列表将变量传入表达式中
  8. 3. if 条件
  9.     过滤列表中不符合条件的值
  10. '''
复制代码
1.2 参考实例
  1. # 从列表中提取首字母小于c的元素,并以全体大写的形式存储在另一个列表中
  2. elements = ['Omega', 'mu', 'alpha', 'beta', 'pi', 'sigma']
  3. temp = [element.upper() for element in elements if element[0'] < 'c']
  4. for i in temp:
  5.     print(i)
  6. '''
  7. 运行结果:
  8. OMEGA
  9. ALPHA
  10. BETA
  11. '''
  12. # 计算1-30内可以被3整除的整数
  13. mylist = [i for i in range(1, 31) if i % 3 == 0]
  14. print(i)
  15. '''
  16. 运行结果:
  17. [3, 6, 9, 12, 15, 18, 21, 24, 27, 30]
  18. '''
  19. # 创建列表[(0,1),(1,2),(2,3),(3,4),(4,5),(5,6)]
  20. res = [(i, i+1) for i in range(0, 6)]
  21. print(res)
  22. '''
  23. 运行结果:''
  24. [(0, 1), (1, 2), (2, 3), (3, 4), (4, 5), (5, 6)]
  25. '''
  26. # 应用列表推导式,去除列表中成绩小于80的字典
  27. dict_list = [{"科目": "高等数学", "成绩": 96},
  28.              {"科目": "大学物理", "成绩": 90},
  29.              {"科目": "线性代数", "成绩": 91},
  30.              {"科目": "大学英语", "成绩": 75},
  31.              {"科目": "分析化学", "成绩": 81},
  32.              {"科目": "有机化学", "成绩": 76}]
  33. res = [d for d in dict_list if d["成绩"] >= 80]
  34. print(res)
  35. '''
  36. 运行结果:
  37. [{'科目': '高等数学', '成绩': 96},
  38. {'科目': '大学物理', '成绩': 90},
  39. {'科目': '线性代数', '成绩': 91},
  40. {'科目': '分析化学', '成绩': 81}]
  41. '''
复制代码
2 字典推导式

2.1 基本格式
  1. {键表达式:值表达式 for 变量 in 某表}
  2. {键表达式:值表达式 for 变量 in 某表 if 条件}
复制代码
2.2 参考实例
  1. # 通过字典推导式,颠倒字典的键名和值
  2. dict_list = {"科目": "高等数学", "成绩": 96}
  3. res = {v:k for k,v in dict_list.items()}
  4. print(res)
  5. '''
  6. 运行结果:
  7. {'高等数学': '科目', 96: '成绩'}
  8. '''
  9. # 使用字符串及其长度创建字典
  10. mylist = ['MySQL', 'Python', 'C++', 'Java', 'HTML', 'CSS']
  11. mydict = {k: len(k) for k in mylist}
  12. print(mydict)
  13. '''
  14. 运行结果:
  15. {'MySQL': 5, 'Python': 6, 'C++': 3, 'Java': 4, 'HTML': 4, 'CSS': 3}
  16. '''
  17. # 生成一个包含5个随机数的字典
  18. import random
  19. res = {k: random.randint(10, 100) for k in range(1, 7)}
  20. print(res)
  21. '''
  22. 运行结果:
  23. {1: 39, 2: 60, 3: 40, 4: 44, 5: 42, 6: 96}
  24. '''
  25. # 将两个长度相同的列表合并成字典
  26. course = ['Python', 'MySQL', 'Java', 'Javascript', 'HTML']
  27. score = [99, 89, 80, 60, 60]
  28. course_score = {k: v for k, v in zip(course, score)}
  29. print(course_score)
  30. '''
  31. 运行结果:
  32. {'Python': 99, 'MySQL': 89, 'Java': 80, 'Javascript': 60, 'HTML': 60}
  33. '''
复制代码
3 集合推导式

3.1 基本格式
  1. {表达式 for 项目 in 序列}
  2. {表达式 for 项目 in 序列 if 条件}
复制代码
3.2 参考实例
  1. # 提取是Python的字母并存储
  2. res = {v for v in 'pdyftaahdofgng' if v in 'python'}
  3. print(res)
  4. '''
  5. 运行结果:
  6. {'o', 'y', 'h', 't', 'p', 'n'}
  7. '''
  8. # 获取字符串的长度,并去重
  9. course = ['Python', 'MySQL', 'Java', 'Javascript', 'HTML']
  10. res = {len(item) for item in course}
  11. print(res)
  12. '''
  13. 运行结果:
  14. {10, 4, 5, 6}
  15. '''
  16. # 计算数字3,4,5的立方数
  17. res = {v**3 for v in range(3, 6)}
  18. print(res)
  19. '''
  20. 运行结果:
  21. {64, 27, 125}
  22. '''
复制代码
4 元组推导式

4.1 基本格式
  1. '''
  2. 元组推导式返回生成器对象
  3. 可以使用函数tuple()直接将生成器对象转换成元组
  4. '''
  5. (表达式 for 项目 in 序列)
  6. (表达式 for 项目 in 序列 if 条件)
复制代码
4.2 参考实例
  1. # 计算数字3,4,5的立方数
  2. res = (v**3 for v in range(3, 6))
  3. print(tuple(res))
  4. '''
  5. 运行结果:
  6. (27, 64, 125)
  7. '''
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

三尺非寒

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表