python常用的推导式

转自:http://www.liujiangblog.com/course/python/36

Python语言有一种独特的推导式语法,相当于语法糖的存在,可以帮你在某些场合写出比较精简炫酷的代码。但没有它,也不会有太多的影响。Python语言有几种不同类型的推导式,下面逐一介绍:

1. 列表推导式

列表推导式是一种快速生产列表的方式。其形式是用方括号括起来的一段语句,如下例子所示:

list = [x*x for x in range(1,10)]
print(list) 
----------------------------------
[1, 4, 9, 16, 25, 36, 49, 64, 81]

列表推导式要这么理解,首先执行for循环,对于每一个x,带入x*x中进行运算,将运算结果逐一添加到一个新列表内,循环结束,得到最终列表。它相当于下面的代码:

list = []
for i in range(1,10):
	list.append(i*i)
print(list)

列表推导式为我们提供了一种在一行内实现较为复杂逻辑的生成列表的方法。其核心语法式用中括号[]将生成逻辑封装起来。

列表推导式有多种花样玩法:

  • 增加条件语句

>>>[x*x for x in range(1,10) if x%2 == 0]
[4, 16, 36, 64]

通过在后面添加if子句,对x进行过滤。

  • 多重循环
>>> [a+b for a in '123' for b in 'abc']
['1a', '1b', '1c', '2a', '2b', '2c', '3a', '3b', '3c']
  • 更多用法
>>> dic = {"k1":"v1","k2":"v2"}
>>> a = [k+":"+v for k,v in dic.items()]
>>> a
['k1:v1', 'k2:v2']

2.字典推导式

既然使用中括号[]可以编写列表推导式,那么使用大括号呢?你猜对了,使用大括号可以制造字典推导式。

dic = {x : x**2 for x in (2,4,6)}
print(dic)
----------------------------------
{2: 4, 4: 16, 6: 36}

3. 集合推导式

大括号除了能用作字典推导式,还可以用作集合推导式,两者仅在细微处有差别。

a = {x for x in 'abracadabra' if x not in 'abc'}
--------------------------------------
{'r', 'd'}

4. 元组推导式?

没有元祖推导式。圆括号在Python中被用作生成器的语法了。

tup = (x for x in range(9))
print(tup)
print(type(tup))
----------------------------
<generator object <genexpr> at 0x107ea8f90>
<class 'generator'>

要通过类似方法生成元组,需要显示调用元组的类型转换函数tuple(),如下所示:

tup = tuple(x for x in range(9))
print(tup)
print(type(tup))
----------------------------------
(0, 1, 2, 3, 4, 5, 6, 7, 8)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值