Discuss / Python / 作业

作业

Topic source

GARRY2019

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

def triangle():

    L =[1]

    while True:

        b=L.copy()

        yield b

        L.append(0)

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

牛匹

余吟21607

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

为什么需要一个b 来接收L再输出,不加这个为什么会多一个0.。。有点捋不清了。求解

直接yield L 的话,L指向的内存位置假设是 L1,result里保存的值就是指向L1的,L.append(0)是会修改L1的值,导致result中的值被修改为L.append的值。可以通过print(id(对象)),来查看对象的内存位置,这可能可以更好的帮助你理解

啊哈十五

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

这个L.append(0)是真的牛

我自己死活想不到这个

太妙了,哈哈哈啊哈。

三楼的,不要b也可以运行

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

小白请教:为什么函数体最后不需要return?

append(0)真的太绝了,我想了好久!!!才能理解!!!别说自己想出来了

NickLans

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

6楼的,不要b真的不行,你去试试

Rhino03550

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

妙啊~~~~~


  • 1
  • 2

Reply