Python 列表、字典和集合推导式及生成器表达式

简介:

Python 推导式 comprehensions(又称解析式),推导式是 Python 内置的非常简单却强大的可以用来创建列表、字典和集合的语法。生成器表达式并不真正的创建,而是返回一个生成器对象,此对象在每次计算出一个条目后,把这个条目“产生”(yield)出来。生成器表达式使用了“惰性计算”或称作“延时求值”的机制。生成器表达式可以用来处理大数据文件。生成器表达式产生的是一个生成器对象,写法简单而优雅,实质就是迭代器。本文主要介绍 Python中列表、字典和集合推导式及生成器表达式的使用。

**

1、列表推导式

**
列表推导式写法简单而优雅,可以将多行代码融合成一行。主要是将其他对象转换成列表或对原来的列表进行过滤。

语法

[expression for iter_val in iterable]

[expression for iter_val in iterable if cond_expr]

例如,

list_comp1 = [x**2 for x in range(10) ]
print(list_comp1)
list_comp2 = [x**2 for x in range(10) if x%2 == 0]
print(list_comp2)

2、字典推导式
字典推导式写法简单而优雅,可以将多行代码融合成一行。主要是将其他对象转换成字典或对原来的字典进行过滤。

语法

{expression for iter_key,iter_val in iterable}

{expression for iter_key,iter_val in iterable if cond_expr}

例如,

my_dict = {'C': 22, 'Java': 24, 'Python': 28, 'Linux': 20}
dict_comp1 = {key:key+"_"+str(value) for key, value in my_dict.items()}
print(dict_comp1)
dict_comp2 = {key:key+"_"+str(value) for key, value in my_dict.items() if value > 20}
print(dict_comp2)

3、集合推导式
集合推导式写法简单而优雅,可以将多行代码融合成一行。主要是将其他对象转换成集合或对原来的集合进行过滤。

语法

{expression for iter_val in iterable}

{expression for iter_val in iterable if cond_expr}

例如,

squared1 = {x**2 for x in [1, 1, 2, 3, 4, 5, 5]}
print(squared1)
squared2 = {x**2 for x in [1, 1, 2, 3, 4, 5, 5] if x < 5}
print(squared2)

4、生成器表达式
生成器表达式与列表推导式使用相同,区别在于生成器表达式用小括号()。生成器表达式返回的是一个生成器迭代器 generator

语法

(expression for iter_val in iterable)

(expression for iter_val in iterable if cond_expr)

例如,

gen_exp1 = (x**2 for x in range(10))
print(gen_exp1)
print(tuple(gen_exp1))#需要获得结果可以转成list或tuple
gen_exp2 = (x**2 for x in range(10) if x%2 == 0)
print(gen_exp2)
print(list(gen_exp2))#需要获得结果可以转成list或tuple

了解更多分析及数据抓取可查看:
http://cloud.yisurvey.com:9081/html/529942a8-212c-4c85-9c92-9c56beb4a299.html?ly=csdn
特别说明:本文旨在技术交流,请勿将涉及的技术用于非法用途,否则一切后果自负。如果您觉得我们侵犯了您的合法权益,请联系我们予以处理。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值