Python推导式


Python 推导式是一种独特的数据处理方式,可以从一个数据序列构建另一个新的数据序列的结构体。
推导式比普通的for循环语句效率要高。

推导式种类

  • 列表(list)推导式
  • 字典(dict)推导式
  • 集合(set)推导式
  • 元组(tuple)推导式

列表推导式

列表推导式语法

[表达式 for 变量 in 序列] 
[表达式 for 变量 in 序列 if 条件]		#只有一个if时放最后,如果for循环中条件成立,则变量才返回,可以应用于表达式,形成列表。
[表达式1 if条件 else 表达式2 for 变量 in 序列]  #if else时三目运算放前面,如果for循环中条件成立,则变量才返回,可应用于表达式,否则应用于表达式2,形成列表。	
[表达式  for if for if for if] for嵌套ifif嵌套for

列表推导式举例

# 单条件
names = ['Bob','Tom','alice','Jerry','Wendy','Smith']
new_names = [name.upper()for name in names if len(name)>3]
print(new_names)
result:
['ALICE', 'JERRY', 'WENDY', 'SMITH']

# if else型
names = ['Bob','Tom','alice','Jerry','Wendy','Smith']
new_names = [name.upper() if len(name)>3 else name.lower() for name in names]
print(new_names)
result:
['bob', 'tom', 'ALICE', 'JERRY', 'WENDY', 'SMITH']

#嵌套循环型
list1=[(i, j) for i in range(3) if(i%2==0) for j in range(5) if(j%2)==0]
print(list1)
result:
[(0, 0), (0, 2), (0, 4), (2, 0), (2, 2), (2, 4)]

字典推导式

字典推导式语法

{key_exp:value_exp for key,value in dict.items()}
{key_exp:value_exp for key,value in dict.items() if condition}
{key_exp:value_exp1 if condition else value_exp2 for key,value in dict.items()}

字典推导式举例

```其它同列表推导式
dict1 = {"a":10,"B":20,"C":True,"d":"mangnolia","E":"python"}
dict2 = {key:value if key.isupper() else "error" for key,value in dict1.items()}
print(dict2)

result:
{'a': 'error', 'B': 20, 'C': True, 'd': 'error', 'E': 'python'}

元组集合推导式

  • 集合推导式同列表推导式,但是会自动去重。

元组推导式

  • 如果按照和列表类似的方法使用元组推导式,会得到一个生成器对象,需要人为将其转换为元组。
a = (i+1 for i in [1, 2, 3])
print(a)
b = tuple(a)
print(type(b), b)

result:
<generator object <genexpr> at 0x0000013B026940C0>
<class 'tuple'> (2, 3, 4)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值