Python推导式(生成式)

Python推导式(生成式)

 

1、推导式

推导式是从一个或者多个迭代器快速简洁的创建数据结构的一种方法。可以将循环和条件判断相结合,从而避免语法冗长的代码。

2、列表推导式

常见的列表推导式有以下两种格式 
[expression for item in iterable]

[expression for item in iterable if condition]

下面通过具体的代码举例说明列表推导式的应用

(1) 1-10 的所有整数的平方组成的列表

>>> power_list=[x*x for x in range(1,11)]
>>> power_list
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
>>>

(2) 1-10 的所有奇数组成的列表

>>> odd_list=[x for x in range(1,11) if x%2==1]
>>> odd_list
[1, 3, 5, 7, 9]
>>>

(3) 两个元组中各取一个元素生成的元组的列表

>>> a=(1,2)
>>> b=(3,4)
>>> a_b=[(na,nb) for na in a for nb in b]
>>> a_b
[(1, 3), (1, 4), (2, 3), (2, 4)]
>>>

(4) 两个字符串各取一个字符所组成的字符串列表

>>> str1='abc'
>>> str2='XYZ'
>>> [s1+s2 for s1 in str1 for s2 in str2]
['aX', 'aY', 'aZ', 'bX', 'bY', 'bZ', 'cX', 'cY', 'cZ']
>>>

3、字典推导式

字典推导式格式如下:

{key_expression : value_expression for expression in iterable}

示例代码

(1) 字符串中字符为键,出现次数为值

>>> s='letters'
>>> d={letter : s.count(letter) for letter in set(s)}
>>> d
{'l': 1, 'e': 2, 't': 2, 'r': 1, 's': 1}
>>>

4、集合推导式

集合推导式该格式如下:

{expression for expression in iterable}

示例代码

(1) 1-20 能被3整除的数的集合

>>> m_set={x for x in range(1,21) if x%3==0}
>>> m_set
{3, 6, 9, 12, 15, 18}
>>>

5、生成器推导式

将列表推导式中的方括号换成圆括号就是生成器推导式,不是元组推导式,元组是没有推导式的。生成器推导式返回的是一个生成器对象。

示例代码

>>> number_thing=(number for number in range(1,11))
>>> number_thing
<generator object <genexpr> at 0x00000287D48DFFC0>
>>> type(number_thing)
<class 'generator'>
>>> number_list = list(number_thing)
>>> number_list
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> try_again = list(number_thing)
>>> try_again
[]
>>>
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值