Discuss / Python / 小白虚心求教,表示每个练习题都得用上好久理解。。

小白虚心求教,表示每个练习题都得用上好久理解。。

Topic source

流年_五月

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

首先感慨一下,每道题自己都做不出来,都得看大神的评论,还得看半天,好受挫。。 正题: 请问下面这个代码,现实的结果是一样的呀?为什么会显示测试失败呢? L=[1] while True: yield L L.append(0) L=[L[i-1]+L[i] for i in range(len(L))]

最后,真心感谢廖老师的分享。

未易1308

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

你试试 yield list(L)

流年_五月

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

!!!!可以了!!

好厉害!

但是为啥呀??

Shepard_sjtu

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

因为L作为List是可变的。注意测试的代码,相当于result.append(L),在函数里面每改变一次L,result里面的元素也会跟着变。而List(L)相当于生成一个新的列表进行返回,你后面对L的改变都不会影响到以前加进去的元素。

yi_喔喔

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

yield(L)真的成功了,自己想了一晚上想不通,为什么我的results会变成[[1,0],[1,1,0],[1,2,1,0]...]这样,看到这个回复终于懂了!


  • 1

Reply