python学习:各种推导式玩法-推导式套路

打印 上一主题 下一主题

主题 935|帖子 935|积分 2805

1.推导式套路

除了最简单的列表推导式和生成器表达式,其实还有字典推导式、集合推导式等等。
下面是一个以列表推导式为例的推导式详细格式,同样适用于其他推导式。
  1. variable = [out_exp_res for out_exp in input_list if out_exp == 2]
  2.   out_exp_res:  列表生成元素表达式,可以是有返回值的函数。
  3.   for out_exp in input_list:  迭代input_list将out_exp传入out_exp_res表达式中。
  4.   if out_exp == 2:  根据条件过滤哪些值可以。
复制代码
2.列表推导式

例一:30以内所有能被3整除的数
  1. multiples = [i for i in range(30) if i % 3 is 0]
  2. print(multiples)
  3. # Output: [0, 3, 6, 9, 12, 15, 18, 21, 24, 27]
复制代码
例二:30以内所有能被3整除的数的平方
  1. def squared(x):
  2.     return x*x
  3. multiples = [squared(i) for i in range(30) if i % 3 is 0]
  4. print(multiples)
复制代码
例三:找到嵌套列表中名字含有两个‘e’的所有名字
  1. names = [['Tom', 'Billy', 'Jefferson', 'Andrew', 'Wesley', 'Steven', 'Joe'],
  2.          ['Alice', 'Jill', 'Ana', 'Wendy', 'Jennifer', 'Sherry', 'Eva']]
  3. print([name for lst in names for name in lst if name.count('e') >= 2])  # 注意遍历顺序,这是实现的关键
复制代码
3.字典推导式

例一:将一个字典的key和value对调
  1. '''
  2. 学习中遇到问题没人解答?小编创建了一个Python学习交流群:711312441
  3. 寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
  4. '''
  5. mcase = {'a': 10, 'b': 34}
  6. mcase_frequency = {mcase[k]: k for k in mcase}
  7. print(mcase_frequency)
复制代码
例二:合并大小写对应的value值,将k统一成小写
  1. mcase = {'a': 10, 'b': 34, 'A': 7, 'Z': 3}
  2. mcase_frequency = {k.lower(): mcase.get(k.lower(), 0) + mcase.get(k.upper(), 0) for k in mcase.keys()}
  3. print(mcase_frequency)
复制代码
4.集合推导式

例:计算列表中每个值的平方,自带去重功能
  1. squared = {x**2 for x in [1, -1, 2]}
  2. print(squared)
  3. # Output: set([1, 4])
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

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

本版积分规则

圆咕噜咕噜

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

标签云

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