python 笔记 之 列表生成式和生成器

本文介绍了Python中生成器和列表生成式的使用方法,并通过示例代码详细解释了两者的区别及应用场景。此外,还提供了一个利用生成式解决九宫格问题的例子。
'''
列表生成式
[exp for val in collection if condition]

生成器
方法一:(exp for val in collection if condition)
方法二:使用yield关键字
'''



a1 = (x for x in range(1, 10) if x % 2 == 0)
print(a1)     #是一个对象
# python2 a1.next()
print(next(a1))  # python3 是直接调用next方法,到下一个
print("#"*20)    # 打印20个#号
for i in a1:
    print(i)

a2 = [x for x in range(1, 10) if x % 2 == 0]
print(a2)    #是一个列表

def test():
    a = 1
    for i in range(1, 10):
        yield i   #返回之后会回到这里,执行下一行
        a += 1
        # return i


#  return 和 yield的区别
# yield可以理解成return ,但是比return多一些角色
# yield每次都返回,但是下一次取值,是从yield的下一行开始执行
m = test()
print(m)




# 九宫格
def jgg():
    # number = list()
    count = 1
    # for i in range(1, 10):
    #     number.append(i)
    for A in [x for x in range(1, 10)]:
        for B in [x for x in range(1, 10) if x != A]:
            for C in [x for x in range(1, 10) if x != A and x != B]:
                for D in [x for x in range(1, 10) if x != A and x != B and x != C]:
                    for E in [x for x in range(1, 10) if x != A and x != B and x != C and x != D]:
                        for F in [x for x in range(1, 10) if x != A and x != B and x != C and x != D and x != E]:
                            for G in [x for x in range(1, 10) if
                                      x != A and x != B and x != C and x != D and x != E and x != F]:
                                for H in [x for x in range(1, 10) if
                                          x != A and x != B and x != C and x != D and x != E and x != F and x != G]:
                                    for I in [x for x in range(1, 10) if
                                              x != A and x != B and x != C and x != D and x != E and x != F and x != G and x != H]:
                                        if (
                                                A + B + C == D + E + F == G + H + I == A + D + G == B + E + H == C + F + I == A + E + I == C + E + G == 15):
                                            print('''
         -------------
    第   | {1} | {2} | {3} |
    {0}.   | {4} | {5} | {6} |
    个   | {7} | {8} | {9} |
         -------------
                                                                                '''.format(count, A, B, C, D, E, F, G,
                                                                                           H, I))
                                            count += 1
# 九宫格 end

# jgg()  想要输出九宫格结果就去掉注释

转载于:https://my.oschina.net/u/3824134/blog/1797526

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值