python的推导式(列表推导式、字典推导式、集合推导式)

一、list列表推导式
参考代码

    start_urls = ["http://hz.jiwu.com/esf/list-page"+str(page)+".html" for page in range(1,5)]
    http://hz.jiwu.com/esf/list-page: 列表生成元素表达式,可以是有返回值的函数。
    for page in range(1,5):  迭代input_list将out_exp传入out_exp_res表达式中。
    后面还可以添加条件:  根据条件过滤哪些值可以。

print(start_urls)
 #输出结果:
['http://hz.jiwu.com/esf/list-page1.html', 'http://hz.jiwu.com/esf/list-page2.html', 'http://hz.jiwu.com/esf/list-page3.html']

2、使用()生成generator

将俩表推导式的[]改成()即可得到生成器。

multiples = (i for i in range(30) if i % 3 is 0)
print(type(multiples))
#  Output: <type 'generator'>
二、字典推导式

字典推导和列表推导的使用方法是类似的,只不中括号该改成大括号。直接举例说明:

例子一:大小写key合并

mcase = {'a': 10, 'b': 34, 'A': 7, 'Z': 3}
mcase_frequency = {
    k.lower(): mcase.get(k.lower(), 0) + mcase.get(k.upper(), 0)
    for k in mcase.keys()
    if k.lower() in ['a','b']
}
print mcase_frequency
#  Output: {'a': 17, 'b': 34}

例子二:快速更换key和value

mcase = {'a': 10, 'b': 34}
mcase_frequency = {v: k for k, v in mcase.items()}
print mcase_frequency
#  Output: {10: 'a', 34: 'b'}

三、集合推导式
它们跟列表推导式也是类似的。 唯一的区别在于它使用大括号{}。

例一:

squared = {x**2 for x in [1, 1, 2]}
print(squared)
# Output: set([1, 4])
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值