我是靠谱客的博主 欣慰中心,最近开发中收集的这篇文章主要介绍Python-杨辉三角输出,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

今天学习廖雪峰老师的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-杨辉三角输出所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(49)

评论列表共有 0 条评论

立即
投稿
返回
顶部