day13

迭代器

不是函数,只是一个称呼而已

# 迭代器:x = 10  # 不是可迭代对象
s = 'abc'
s.__iter__()
lt = [1, 2, 3]
lt.__iter__()
tup = (1,)
tup.__iter__()
dic = {'a': 1}
dic.__iter__()
se = {1}
se.__iter__()
fw = open('test.txt', 'a+', encoding='utf8')
fw.seek(0, 0)
fw.__iter__()

可迭代对象:

含有__iter__方法叫做可迭代对象

除了数字类型都是可迭代对象

可迭代对象使用__iter__变成迭代器

## 迭代器对象:

含有__iter__和__next__方法叫做迭代器对象

只有文件时迭代器对象

迭代器使用__iter__依然是迭代器#

可迭代对象不一定是迭代器对象; 迭代器对象一定是可迭代对象

三元表达式

x = 10
y = 20  
三元表达式 --> 三目表达式
print(x) if x > y else print(y) 

列表推导式

lt = [i**2 for i in range(10)
print(lt)

字典生成式

lt1 = ['a', 'b', 'c']
lt2 = [1, 2, 3]
dic = {k: v ** 2 for k, v in zip(lt1, lt2)}
print(dic)
lt = list('abc')
print(lt)

生成器生成式

自定义range

def my_range(start, stop, step=1):
    while start < stop:
        yield start
        start += 1


g = my_range(0, 3)
print(f"list(g): {list(g)}")
list(g): [0, 1, 2]

yield的特性

暂停函数

通过next取值

return的特性

  1. 终止函数 2. 通过调用函数拿到值写一个

range方法

  1. 生成器 2. 可变长参数

转载于:https://www.cnblogs.com/yu521/p/11580489.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值