Questions

#!/usr/bin/env python
# -*- coding: utf-8 -*-

#生成器中的元素只能从头到尾取一次,生成器不调用不执行
g1 = filter(lambda n:n%2==0,range(10))
g2 = map(lambda n:n*2,range(3))

print(list(g1),g1)  #[0, 2, 4, 6, 8]
print(list(g2),g2)  #[0, 2, 4]

for i in g1:
    for j in g2:
        print(i,j)
        print(i*j)   # 000


def multip():
    return [lambda x:i*x for i in range(4)]
print([m(2) for m in multip()])

"""
拆分 1:
"""
def multip():
    fun_list=[]
    for i in range(4):
        fun = lambda x:i*x
        fun_list.append(fun)
    return fun_list
print([m(2) for m in multip()])


"""
拆分 2:
"""
def multip():
    fun_list=[]
    i = 0
    fun = lambda x:i*x
    fun_list.append(fun)

    i = 1
    fun = lambda x:i*x
    fun_list.append(fun)

    i = 2
    fun = lambda x:i*x
    fun_list.append(fun)

    i = 3
    fun = lambda x:i*x
    fun_list.append(fun)

    #此时i已经等于3了,fun_list=[lambda x:i*x,lambda x:i*x,lambda x:i*x,lambda x:i*x]
    #特别注意 lambda一直没有调用。
    return fun_list

print([m(2) for m in multip()])   #  [6, 6, 6, 6]


"""
要得到[0,2,4,6],方式1:
"""
def multip():
    for i in range(4):
        yield lambda x:i*x
print([m(2) for m in multip()])  #[0, 2, 4, 6]

"""
要得到[0,2,4,6],方式2:
"""
def multip():
    return (lambda x:i*x for i in range(4))
print([m(2) for m in multip()])
#!/usr/bin/env python
# -*- coding: utf-8 -*-
lst = ['周','周星星','麻花藤','周扒皮']

for i in range(len(lst)-1,-1,-1):
    print(i,range(len(lst)-1,-1,-1))
    if lst[i][0] =='周':
        lst.pop(i)
print(lst)

lst = ['周','周星星','麻花藤','周扒皮']
lst1=[]
for i in lst:
    if i.startswith('周'):
        lst1.append(i)
for j in lst1:
        lst.remove(j)
print(lst)
#! /user/bin/env python
# -*- coding: utf-8 -*-
def fib(max):
    n,a,b = 0,0,1
    while n < max:
        yield  b
        a,b = b,a+b
        n += 1
    return 'haha'


print(fib(6).__next__(),id(fib(6).__next__()))  #操作fib(6)这个生成器
print(fib(6).__next__(),id(fib(6).__next__()))  #操作又一个fib(6)这个生成器
print(fib(6).__next__(),id(fib(6).__next__()))  #操作又一个新生成的fib(6)这个生成器
#函数名()的到的结果就是生成器,上面始终在操作新的生成器

pro=fib(6)  #生成一个生成器
print(pro.__next__(),id(pro.__next__()))  #操作这个已经生成的生成器pro
print(pro.__next__(),id(pro.__next__()))  #操作这个已经生成的生成器pro
print(pro.__next__(),id(pro.__next__()))  #操作这个已经生成的生成器pro
#函数名()的到的结果就是生成器,上面操作的一直是Pro这一个生成器

#你从__next__()的id就能看出,fib(6)是新生成的生成器。

  

 

上一篇:在有vs2015情况下安装Visual C++ Build tools


下一篇:Python3 统计文件夹下文件数量