菜鸟学习日记(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
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。