Discuss / Python / 没想到列表可以直接相加。。。

没想到列表可以直接相加。。。

Topic source
在此插入代码
# -*- coding: utf-8 -*- def triangles():
x=[1]
yield x
while True:
    x.append(0)
    x.insert(0,0)
    x=[x[i]+x[i+1] for i in range(len(x)-1)] 
    yield x
n = 0
for t in triangles():
    print(t) n = n + 1
    if n == 10: 
        break

奔跑吧Sky

#2 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 这个算法确实很巧妙,但是有一点我一直没明白 就是在第一次执行while循环的时候L=[1],那么range(len(L)-1)就是range(0)了,中间这一串[L[0]+L[1]]的L[1]是什么?还有range(0)生成的是什么? 希望得到大神解答

回复 奔跑吧sky range(0)为空 range(1)包含0 range(2)包含0,1 所以第一次调用的时候不会出现L[0]+L[1] 而是得到首尾的两个[1]相加


  • 1

Reply