概述
今天学习廖雪峰老师的python,学习到了生成器,最后老师给了一道题
输出杨辉三角
# -*- coding: utf-8 -*- def triangles():
# 期待输出: # [1] # [1, 1] # [1, 2, 1] # [1, 3, 3, 1] # [1, 4, 6, 4, 1] # [1, 5, 10, 10, 5, 1] # [1, 6, 15, 20, 15, 6, 1] # [1, 7, 21, 35, 35, 21, 7, 1] # [1, 8, 28, 56, 70, 56, 28, 8, 1] # [1, 9, 36, 84, 126, 126, 84, 36, 9, 1] n = 0 results = [] for t in triangles(): print(t) results.append(t) n = n + 1 if n == 10: break if results == [ [1], [1, 1], [1, 2, 1], [1, 3, 3, 1], [1, 4, 6, 4, 1], [1, 5, 10, 10, 5, 1], [1, 6, 15, 20, 15, 6, 1], [1, 7, 21, 35, 35, 21, 7, 1], [1, 8, 28, 56, 70, 56, 28, 8, 1], [1, 9, 36, 84, 126, 126, 84, 36, 9, 1] ]: print('测试通过!') else: print('测试失败!')
自己想了半天没想出来,看评论区的第一个代码异常简洁
def triangles():
L = [1]
while True:
yield L
L= [(L + [0])[i] + ([0] + L)[i] for i in range(len(L)+1)]
现来解析一下这个代码
L=[1]为初始状态
重点是
L= [(L + [0])[i] + ([0] + L)[i] for i in range(len(L)+1)]
这一句是列表生成式
L+[0] 和 [0]+L 分别是在列表最前面和最后面加上一个0
len(L)+1则为下一层的个数
两两进行错位相加得到下一行的列表
第二层就是 [1,0]
[0,1]
相加得[1,1]
第三层为 [1,1,0]
[0,1,1]
相加得[1,2,1]
以此类推
最后
以上就是欣慰中心为你收集整理的Python-杨辉三角输出的全部内容,希望文章能够帮你解决Python-杨辉三角输出所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复