菜鸟学习日记(python)——推导式
2023-12-13 11:04:58
?python中的推导式是一种独特的数据处理方式,可以从一个数据序列去构建另一个新的数据序列的结构体。
它包括以下推导式:
- 列表(list)推导式
- 字典(dict)推导式
- 集合(set)推导式
- 元组(tuple)推导式
列表(list)推导式
列表推导式的一般格式为:
[表达式1 for?变量名?in?列表名]
或者对推导式结果进行筛选
[表达式1 for?变量名?in?列表名 if?表达式2]
其中,表达式1表示的是列表生成元素表达式,它可以是有返回值的函数;表达式2是条件过滤语句,可以过滤掉不符合条件的值。
以下是简单的实例:
#列表推导式
#将list1乘以2倍输出
list1=[1,2,3]
print([i*2 for i in list1 if i>1])
#list1中长度大于3的字符串,小写全部转成大写输出
list1=['lily','judy','Anny','Bob']
print([str.upper() for str in list1 if len(str)>3])
#打印20以内可以被2整除的整数
print([num for num in range(20) if num%2==0])
字典(dict)推导式
字典推导式的一般格式为:
{键:值表达式?for?键?in?序列}
或
{键:值表达式?for?键?in?序列?if?条件表达式}
下面是简单的实例:
#字典推导式
#列表元素作为键,列表元素的长度作为值
list1=['name','sex','age']
dict1={str:len(str) for str in list1}
print(dict1)
#用推导式复制出一个拥有相同键值对的字典
dict2={'name':'卷鹅','sex':'男','age':28}
dict3={str:dict2[str] for str in dict2.keys()}
print(dict3)
print(id(dict2)) #对比两个字典的id,是不同的
print(id(dict3))
#用推导式计算三个整数的幂方
dict4={num:num**2 for num in range(1,5)}
print(dict4)
#加上筛选条件
dict4={num:num**2 for num in range(1,5) if num!=3}
print(dict4)
集合(set)推导式
集合推导式的一般格式为:
{表达式?for?变量?in?序列}
或
{表达式?for?变量?in?序列?if?条件表达式}
简单实例如下:
#集合推导式
set1={var**3 for var in range(1,6)}
print(set1)
set2={ch for ch in('a','b','c','d','e') if ch not in ('a','c')}
print(set2)
注意:输出的集合是无序的
元组(tuple)推导式(生成器表达式)
元组推导式可以利用 range 区间、元组、列表、字典和集合等数据类型,快速生成一个满足指定需求的元组。
元组推导式基本格式:
(表达式?for?变量名?in?序列)
??或
(表达式?for?变量名?in?序列?if?条件表达式)
元组推导式和列表推导式的用法完全相同,只是元组推导式是用?()?圆括号将各部分括起来,而列表推导式用的是中括号?[],另外元组推导式返回的结果是一个生成器对象。
但是我们可以用类型转换函数将它转换为一个元组
简单的实例如下:
#元组推导式
a = (x for x in range(1,10))
print(a)
print(type(a))
tuple1=tuple(a)
print(tuple1)
print(type(tuple1))
文章来源:https://blog.csdn.net/m0_58498198/article/details/134873980
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!