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. 可变长参数
posted @ 2019-09-24 19:40  夜凛  阅读(100)  评论(0编辑  收藏  举报