Discuss / Python / 杨辉三角

杨辉三角

Topic source

音凉yolanda

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

def triangles(): L=[1] while True: yield L L=[L[i]+L[i+1] for i in range(len(L)-1)] L.insert(0,1) L.append(1)

好精炼呀

你真是太厉害了,这么短的代码就可以实现。研究你的代码也让我对节课有了更深的理解。我仿照课程里的案例,给你的代码加了一个控制,可以按照自己的需求出结果: def triangles(max): L=[1] n=0 while n < max: yield L L=[L[i]+L[i+1] for i in range(len(L)-1)] L.insert(0,1) L.append(1) n=n+1

丿孤旅

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

def triangles(): L=[1] while 1 : yield L L=[L[i]+L[i+1] for i in range(len(L)-1)] L.insert(0,1) L.append(1) def triangles2(): L2=[1] while 1 : yield L2 L2.insert(0,0) L2.append(0) L2=[L2[i]+L2[i+1] for i in range(len(L2)-1)] 输出都是一样的,想知道为什么第二个测试失败?

象音

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

你第二种方法L2.append和L2.insert修改了被results.append(t)的对象

有个疑问,请教大佬们 L[i] + L [i + 1] for i in range(len(L) - 1) 为什么这句话不会越界呢? 当L = [1]的时候,len(L) - 1 = 0,这时候i只能取0 然后就会出现L[0] + L[1] 可是L只有一个0元素啊

额,看懂了,我看串行了....

丿孤旅

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

输出的结果是一样的啊,说明测试时每个循环里的t是一样的,最后results.append(t)不应该也是一样的么?

shiawashe

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

楼主太厉害了/鼓掌

哈哈,英雄所见略同。 def triangles(): curr=[1] pre = curr yield pre while True: curr=[] curr = [pre[index] + pre[index - 1] for index, item in enumerate(pre) if index - 1 >= 0] curr.append(pre[-1]) curr.insert(0, pre[0]) pre = curr yield curr


  • 1
  • 2

Reply