首先上代码 首先先讲第一层。也就是只打印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]
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
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])
代码输出2 当L = [1]时,代码不做任何输出。所以需要第一行的 L = [1]
2
不知道有没有理解错误,如有错误,还希望各位大神指正
list还可以做+运算,厉害,受教。 大概tuple可可以咯,试了dict不行。
Sign in to make a reply
GhZicE-奇
首先上代码 首先先讲第一层。也就是只打印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
这边分成两块,下面一部分是题目原始部分。
顺便附上理解循环内的代码:
代码输出
2
当L = [1]
时,代码不做任何输出。所以需要第一行的L = [1]
不知道有没有理解错误,如有错误,还希望各位大神指正