字典推导式、集合推导式、列表推导式

最近在学习机器学习时,见到字典的key-value颠倒,因此开启了简洁高效的推导式学习!


前言

推导式就是将多行循环和判断语句,用简洁的语法写在一行。


一、字典推导式

字典推导式返回的是一个字典,因此整个表达式用{}括住!

1、问题

实例1:如果表达式condition成立,就将字典dict的键和值赋值给key_new和value_new,并生成新的字典。

{key_new:value_new for key,value in dict.items() if condition}

实例2:如果表达式condition成立,就将字典dict的键和值赋值给key_new和value_new,并生成新的字典。
若不成立,则将新生成字典的值赋为value_new2。

{key_new:value_new if condition else value_new2 for key,value in dict.items()}

2、 实例

 案例1:将字典中的所有key设置为小写
dict3 = {key.lower():value  for key,value in dict1.items() }
print(dict3)
 
# 案例2:将字典中所有key是小写字母的value统一赋值为'error'
dict4 = {key:value if key.isupper() else "error" for key,value in dict1.items() }
print(dict4)

二、集合推导式

集合推导式返回的是一个集合,因此整个表达式需要用{}括住,与字典推导式不同的是{}中只有value,没有key。

1、实例

遍历一个可迭代对象,生成一个集合:

set_jh={value for value in '嫁人就嫁程序员,挣得多,X的早!'}
print(set_jh)

2、注意

  • 集合是无需不重复的,并且每次运行的显示的顺序是不一样。
  • 集合推导式是用{},括起来,但与字典推导式不同的是推到出的是一个值,不是字典推导式中key:value形式。
  • 推导式中后面加的判断语句、还是循环语句都可以根据自己的需求来使用。

三、列表推导式

- 推导式中常用的可迭代对象,range()函数是一个十分重要的可迭代对象。 - range()函数做可迭代对象,使推导式的可读性和简洁性大大提高。 - 列表推导式返回的是一个列表,因此整个表达式需要能够用[]括住!

# in后面跟其他可迭代对象,如字符串
list_c = [7 * c for c in "python"]
print(list_c)

# 带if条件语句的列表推导式
list_d = [d for d in range(6) if d % 2 != 0]
print(list_d)

# 多个for循环
list_e = [(e, f * f) for e in range(3) for f in range(5, 15, 5)]
print(list_e)

# 嵌套列表推导式,多个并列条件

list_g = [[x for x in range(g - 3, g)] for g in range(22) if g % 3 == 0 and g != 0]
print(list_g)

总结

  • 以上就是今天要讲的内容,本文介绍了python推导式的的使用;
  • 推导式可以分为:列表推导式、字典推导式、集合推导式;
  • 其中可迭代对象、循环、判定条件是我们需要认真揣摩;
  • 推导式的宗旨就是简洁,可读性强。
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

求索永无止境

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值