Discuss / Python / 个人理解

个人理解

Topic source

GhZicE-奇

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

首先上代码 首先先讲第一层。也就是只打印1排的情况。此时也就是 L = [1] 然后进入第二层,此时 range(1-1),所以不做循环,此时L = [1, 1] 进入第三层,此时 range(2-1),循环只走一次,也就是L[0] = 1 + L[1] = 1,此时L = [1, 2, 1] 同理第四层,此时 range(3-1),此时第一遍循环,L[0] = 1 + L[1] = 2,当第二遍循环时, L[1] = 2 + L[2] = 1 此时L = [1, 3, 3, 1]

此处进行替代 range(n-1) == range(len(L)-1

def triangles():
    L = [1]
    while True:
        yield L
        L = [1] + [L[i] + L[i+1] for i in range (n-1)] + [1]

这边分成两块,下面一部分是题目原始部分。

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

顺便附上理解循环内的代码:

L = [1,2]

for i in range(len(L)-1):
    print(L[i+1])

代码输出2L = [1]时,代码不做任何输出。所以需要第一行的 L = [1]

不知道有没有理解错误,如有错误,还希望各位大神指正

list还可以做+运算,厉害,受教。 大概tuple可可以咯,试了dict不行。


  • 1

Reply