Python之Comprehension推导式

这里介绍Python中的推导式

Python之Comprehension推导式
abstract.png

Comprehension推导式

Python中的Comprehension推导式,是一种快速将某种类型的数据容器构建为指定类型数据容器的方法

列表推导式

列表推导式用于构建列表,语法如下。具体地,其会遍历可迭代对象,对满足条件的元素,将其传入表达式计算新值,并作为新列表的元素

[表达式 for 变量 in 可迭代对象 if 条件]
print("-------------- 列表推导式 --------------------")

names1 = ['Bob','Tom','alice','Jerry','Wendy','Smith']
# 对于长度超过3的名字,将其转换为大写, 并将结果存放到新列表中
names2 = [ name.upper() for name in names1 if len(name)>3 ]
print(f"names2: {names2}" )

# if 条件不是必须的
square_nums = [ x*x for x in range(6) ]
print( f"square nums: {square_nums}" )

# 可以拥有多个for语句
points1 = [ (x,y) for x in range(2for y in range(3) ]
print(f"points1: {points1}" )

# 可以拥有多个if语句。其会在for遍历后紧跟着进行条件判断
# 要求x坐标大于1、y坐标为奇数
points2 = [ (x,y) for x in range(5for y in range(5if x>1 if y%2==1  ]
print(f"points2: {points2}" )
# 要求x坐标为偶数、y坐标为奇数
points3 = [ (x,y) for x in range(5if x%2==0 for y in range(3if y%2==1 ]
print(f"points3: {points3}" )
Python之Comprehension推导式
figure 1.png

集合推导式

集合推导式用于构建集合,语法如下。具体地,遍历可迭代对象,对满足条件的元素,将其传入表达式计算新值,并作为新集合的元素

{表达式 for 变量 in 可迭代对象 if 条件}
print("-------------- 集合推导式 --------------------")
nums1 = (183237)
nums2 = {num*3 for num in nums1 if num>10}
print(f"nums2: {nums2}")
Python之Comprehension推导式
figure 2.png

字典推导式

字典推导式用于构建字典,语法如下。具体地,遍历可迭代对象,对满足条件的元素,分别传入key表达式、value表达式计算键、值,并作为新字典的键值对

{key表达式:value表达式 for 变量 in 可迭代对象 if 条件}
print("-------------- 字典推导式 --------------------")

companys1 = ['Google','Baidu''Taobao']
companys2 = { company:len(company) for company in companys1 }
print(f"companys2: {companys2}")

companys1 = ['Google''Baidu''Taobao']
companys3 = { company:len(company) for company in companys1 if not company.startswith("B") }
print(f"companys3: {companys3}")

people_info1 = {"Aaron":18"Bob":23"Tony"35}
people_info2 = { v:k for k,v in people_info1.items() }
print(f"people_info2: {people_info2}")
Python之Comprehension推导式
figure 3.png

参考文献

  1. Python编程·第3版:从入门到实践 Eric Matthes著
  2. Python基础教程·第3版 Magnus Lie Hetland著
  3. 流畅的Python·第1版 Luciano Ramalho著

原文始发于微信公众号(青灯抽丝):Python之Comprehension推导式

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/287096.html

(0)
土豆大侠的头像土豆大侠

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!