python generator类型_python高级特征:列表生成式;generator, 迭代器。

Python高级特性

列表生成式:不过一种语法糖

生成器:不过一个方法

迭代器:

列表生成式

Python内置的函数,来创建list。

简单的生成:

>>> list(range(1,11))

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

复杂的生成:增加一个for循环。

>>> a = [x*x for x in range(1, 11)]>>>a

[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

还可以在for循环后加if判断,这样对循环后的所有元素进行整除,得到符合条件的一组元素,返回的是list。

>>> a = [x*x for x in range(1, 11) if x%2 ==0]>>>a

[4, 16, 36, 64, 100]

还可以套用两层for循环

>>> [m + n for m in 'ABC' for n in 'XYZ']

['AX', 'AY', 'AZ', 'BX', 'BY', 'BZ', 'CX', 'CY', 'CZ']

for循环可以同时接收多个变量。比如dict的items()方法:

>>> d = {'x': 'A', 'y': 'B', 'z': 'C'}>>> for k, v ind.items():

...print(k, '=', v)

...

x=A

y=B

z= C

>>>d.items()

dict_items([('x', 'A'), ('y', 'B'), ('z', 'C')])

小结:

list生成式:

[表达式/0~n个变量 for 0~n个变量 in list/dict/相关变体]

本质就是使用循环和条件语句对list/dict进行筛选:

[表达式/变量 条件/循环语句 条件/循环语句]

Ruby类似的方法糖。

Ruby没有列表生成式,但有很多语法糖,来操作array对象。

range对象使用to_a转化为数组。

> (1...11).to_a=> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

乘方后,增加一个判断:等同Python上面的列表生成式👆。

> (1...11).to_a.map{|x| x * x}.select {|x| x % 2==0}=> [4, 16,

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值