def triangles(): Jia_xian = [1] while 1: Yang_hui = [1] for i in range(len(Jia_xian)-1): Yang_hui.append(Jia_xian[i]+Jia_xian[i+1]) Yang_hui.append(1) yield Jia_xian Jia_xian = Yang_hui return 0
这个 return 0 可太虚伪了哈哈哈
可以用列表生成式做少量的简化,如
def mytriangles(): Jia_xian = [1] while 1: yield Jia_xian Jia_xian = [1] + [Jia_xian[i] + Jia_xian[i-1] for i in range(1,len(Jia_xian))]+[1]
可惜不能回避 for i in range(), 因为需要用序号 i 和 i+1 来同时调用序列中的两个元素。
看底下评论里,迭代前在末尾加个0,这样首项迭代时正好引用到末项这个0,这个技巧极其聪明。
def mytriangles(): Yang_hui = [1] while 1: yield Yang_hui Yang_hui.append(0) Yang_hui = [Yang_hui[i] + Yang_hui[i-1] for i in range(len (Yang_hui))]
如果是for i in Jia_xian,那么不能简单地用 i 够到它的下一个元素。当然这也不是没有办法,那就是用别的变量记录 i 的旧值。
def mytriangles(): Jia_xian = [1] while 1: yield Jia_xian Yang_hui, j = [], 0 for i in Jia_xian: Yang_hui.append(i + j) j = i Jia_xian = Yang_hui + [1]
这个也能得到正确的答案。可惜列表生成式无法记录旧值。
Sign in to make a reply
幽境的荼蘼
这个 return 0 可太虚伪了哈哈哈
可以用列表生成式做少量的简化,如
可惜不能回避 for i in range(), 因为需要用序号 i 和 i+1 来同时调用序列中的两个元素。
看底下评论里,迭代前在末尾加个0,这样首项迭代时正好引用到末项这个0,这个技巧极其聪明。
如果是for i in Jia_xian,那么不能简单地用 i 够到它的下一个元素。当然这也不是没有办法,那就是用别的变量记录 i 的旧值。
这个也能得到正确的答案。可惜列表生成式无法记录旧值。