生成器表达式

new_lst2 = [i for i in range(0,101) if i%3 == 0]

print(new_lst2)

不到100个

1000000能被三整除的数

不够节省空间

生成器

def func():

for i in range(1000001):

if i%3 == 0:

yield i

g1 = func()

g1.next()

g = (i for i in range(0,101) if i%3 == 0)

print(g.next())

print(g.next())

林海峰

egg_list=[‘鸡蛋%s’ %i for i in range(10)]

print(egg_list) # 鸡蛋篮子

laomuji=(‘鸡蛋%s’ %i for i in range(10))

老母鸡

迭代器

掌握for循环

实际上for循环的本质 就是将一个可迭代的变成迭代器,

每一次从中取值都相当于执行了一次next

如果是迭代器,那么只能取一次值

生成器 - 本质就是迭代器

生成器函数(返回值是生成器) :

# 处理比较复杂的逻辑
# yield的形式返回值,并且在一次调用中可以多次执行yield

生成器表达式(的结果是生成器) :

# 处理比较简单的逻辑
# 并且能够以更少的代码来节省时间空间

列表推导式,各种推导式

浮点数的概念

def demo():

for i in range(4):

yield i

g=demo()

g1=(i for i in g)

g2=(i for i in g1)

print(list(g1))

print(list(g2)) # 生成器中的数据只能取一次,去完就没有了

def demo():

for i in range(4):

yield i

g=demo()

g1=(i for i in g)

g2=(i for i in g1)

print(list(g2))

print(list(g1))

def add(n,i):

return n+i

def test():

for i in range(4):

yield i

g=test()

for n in [1,10]:

g=(add(n,i) for i in g)

print(list(g))

like

select name,age where phone like 133

select name,age where age > 133

select name,age where age>133

l = [1,Alex,22,13651054608,IT]

133 in l[3]

小版本迭代

7天

第5天 功能完成

2天

生成器

所有的符合条件的行 而是又yield返回

# 10000 500

处理需要显示的字段

如果你已经用逻辑实现功能了

拆分函数 把重复的代码拆分出来

猜你喜欢

转载自blog.csdn.net/HZY199321/article/details/83793145
今日推荐