python推导式、生成器和迭代器

一、推导式

1、列表推导式:

li = ["page{}".format(i) for i in range(1,101)]
print(li)
['page1', 'page2', 'page3', 'page4', 'page5', 'page6', 'page7', 'page8', 'page9', 'page10', 'page11', 'page12', 'page13', 'page14', 'page15', 'page16', 'page17', 'page18', 'page19', 'page20', 'page21', 'page22', 'page23', 'page24', 'page25', 'page26', 'page27', 'page28', 'page29', 'page30', 'page31', 'page32', 'page33', 'page34', 'page35', 'page36', 'page37', 'page38', 'page39', 'page40', 'page41', 'page42', 'page43', 'page44', 'page45', 'page46', 'page47', 'page48', 'page49', 'page50', 'page51', 'page52', 'page53', 'page54', 'page55', 'page56', 'page57', 'page58', 'page59', 'page60', 'page61', 'page62', 'page63', 'page64', 'page65', 'page66', 'page67', 'page68', 'page69', 'page70', 'page71', 'page72', 'page73', 'page74', 'page75', 'page76', 'page77', 'page78', 'page79', 'page80', 'page81', 'page82', 'page83', 'page84', 'page85', 'page86', 'page87', 'page88', 'page89', 'page90', 'page91', 'page92', 'page93', 'page94', 'page95', 'page96', 'page97', 'page98', 'page99', 'page100']

2、字典推导式

dic = {i:i+1 for i in range(1,101)}
print(dic)
{1: 2, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 30: 31, 31: 32, 32: 33, 33: 34, 34: 35, 35: 36, 36: 37, 37: 38, 38: 39, 39: 40, 40: 41, 41: 42, 42: 43, 43: 44, 44: 45, 45: 46, 46: 47, 47: 48, 48: 49, 49: 50, 50: 51, 51: 52, 52: 53, 53: 54, 54: 55, 55: 56, 56: 57, 57: 58, 58: 59, 59: 60, 60: 61, 61: 62, 62: 63, 63: 64, 64: 65, 65: 66, 66: 67, 67: 68, 68: 69, 69: 70, 70: 71, 71: 72, 72: 73, 73: 74, 74: 75, 75: 76, 76: 77, 77: 78, 78: 79, 79: 80, 80: 81, 81: 82, 82: 83, 83: 84, 84: 85, 85: 86, 86: 87, 87: 88, 88: 89, 89: 90, 90: 91, 91: 92, 92: 93, 93: 94, 94: 95, 95: 96, 96: 97, 97: 98, 98: 99, 99: 100, 100: 101}

二、生成器

1、生成器表达式

tu = (i for i in range(10))
print(tu)
<generator object <genexpr> at 0x0000016A0574EE08>

2、通过yield自定义生成器

def gen_fun():
    yield 100
    print("hello")
    yield 1000
res = gen_fun()#返回生成器对象
print(next(res))
print(next(res))
100
hello
1000

三、迭代器

#迭代对象:可以通过for循环遍历的都是可迭代对象,内部只实现了__iter__方法
#列表
li1 = [1,2,3,4,5]
li2 = (iter(li1)) #iter() 实现了__iter__方法
#迭代器 内部实现了__iter__之外 也实现了__next__方法
print(next(li2)) #__next__
print(type(li2))

tu.send() #与生成器进行交互
1
<class 'list_iterator'>

生成器和迭代器的区别:
1、生成器属于迭代器的一种
2、生成器相比迭代器多了几种方法:
send() :与生成器进行交互
closs方法:关闭生成器
throw方法
gen.throw(Exception,“Method throw called”)

生成器<迭代器<可迭代对象

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Dance Wang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值