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
处理需要显示的字段
如果你已经用逻辑实现功能了
拆分函数 把重复的代码拆分出来