附注:如果你想知道,这个账号的所有者和“Dave Shah”账号是同一个人,他发布了同样的问题。我在我的第二个账号(这个账号)上再次问这个问题,因为我不知道如何解决问题,所以得到了粗鲁的评论。
该帖子的链接:How can I append a new number to my list for every new line?
所以我真正的问题是……
所以我试着这么做
您将获得一个n>0的正整数,并且您将构建一个由n行组成的模式:·Row 0包含1个数字-数字1
·每一行都比前一行长一行,并遵循随后的模式
如果您看不到每个数字与原始数字左侧的数字和左侧数字上方的数字之间的联系。另外,每个新列表的第一个数字是前一个列表的最后一个数字。
因此,如果变量n:int = 4,则输出将为
[1]
[1,2]
[2,3,5]
[5,7,10,15]下面是我的代码:
def append(n: int):
for x in range(1,n+1):
return(x,x+1)
print(append(n))当我把n= 4,它似乎不起作用,这是什么问题呢?
发布于 2021-11-03 07:24:04
如果你使用 并把它缩短一点,你可以这样写:
def func(n):
arr=[1]
yield arr
for i in range(n-1):
for k in range(len(arr)):
arr.append(arr[k]+arr[i + k])
arr = arr[i:]
yield arr你现在可以像这样使用这个函数:
for i in func(4):
print(i)
# Output:
# [1]
# [1,2]
# [2,3,5]
# [5,7,10,15]作为生成器的
编辑:如果你只是想在函数中输出它,你只需要像@Bibhav说的那样用print()替换yield ():
def func(n):
arr=[1]
print(arr)
for i in range(n-1):
for k in range(len(arr)):
arr.append(arr[k]+arr[i + k])
arr = arr[i:]
print(arr)列表编辑:如果您希望将yield arr方法与()之类的东西结合使用,则应该用或list(arr)替换以复制该列表,因为否则在函数内部更改'arr‘可能会导致yield的问题。
# Changed 'arr' to 'arr[:]'
def func(n):
arr=[1]
yield arr[:]
for i in range(n-1):
for k in range(len(arr)):
arr.append(arr[k]+arr[i + k])
arr = arr[i:]
yield arr[:]然后你可以像这样使用它:
print(list(func(4)))
# Output:
# [[1],[1,2],[2,3,5],[5,7,10,15]]编辑:如果您想使用return,请执行以下操作:
# You still need to have 'arr[:]'
def func(n):
ret=[]
arr=[1]
ret.append(arr[:])
for i in range(n-1):
for k in range(len(arr)):
arr.append(arr[k]+arr[i + k])
arr = arr[i:]
ret.append(arr[:])
return rethttps://stackoverflow.com/questions/69820591
复制相似问题