Discuss / Python / 交作业

交作业

Topic source
def triangles():
    l = [1]
    yield l
    while True:
        l = [1] + [l[i] + l[i + 1] for i in range(len(l) - 1)] + [1]
        yield l

大梦shake

#2 Created at ... [Delete] [Delete and Lock User]

最佳方法。我一直觉得肯定能用列表生成式完成,但是思维有局限没有想出来,用了笨方法实现了。看了你的代码豁然开朗,对列表生成式理解更深了,谢谢!

报三春晖

#3 Created at ... [Delete] [Delete and Lock User]

自己独立的想出来算法,但是怎么把不能把首尾的1加进去...看了你的才知道,原来list可以这和做加法啊

报三春晖

#4 Created at ... [Delete] [Delete and Lock User]

自己独立的想出来了算法,但是怎么把不能把首尾的1加进去...看了你的才知道,原来list可以这样做加法啊

Conan06

#5 Created at ... [Delete] [Delete and Lock User]

机智!!!

原理就是将第n行分成两个只有n-1个数之后,再逐项相加 例: [1, 3, 3, 1]被分成 [1, 3, 3] 和 [3, 3, 1] 之后逐项相加得 [4, 6, 4] 就是下一行中间的部分

cnzaobao

#6 Created at ... [Delete] [Delete and Lock User]
def triangles():
    l = [1]
    yield l
    while True:
        l = [1] + [l[i] + l[i + 1] for i in range(len(l) - 1)] + [1]
        yield l

n = 0
for t in triangles():
    print t
    n = n + 1
    if n == 15:
        break

你这个算法牛B啊。


  • 1

Reply