CurbStone_ 2023-03-31 16:44 采纳率: 80%
浏览 21
已结题

关于杨辉三角算法迭代器的疑问?

为何下面的代码,不报索引超限错误呢?在推导式中,当x=0时,line只有一个元素,line[x+1]不久超下标了吗?


```python
def yahui():
    line=[1]
    while True:
        yield line
        line=[1]+[line[x]+line[x+1] for x in range(len(line)-1)] + [1]
        

yh = yahui()
n = 0
while n < 3:
    print(next(yh))
    n += 1

```

  • 写回答

3条回答 默认 最新

  • 小小小小人水豚 2023-03-31 17:05
    关注

    因为第1次执行x=0的时候,此时len(line)=1,也就是说推导列表里for循环遍历range(0),再进一步就是[line[x]+line[x+1] for x in range(len(line)-1)]这些代码是不会执行的;
    后续执行完next之后,len(line) > 1了,line[x+1]也就不会超标了

    有帮助的话,请点采纳该答案~

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 1月15日
  • 已采纳回答 1月7日
  • 创建了问题 3月31日