首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何为代码的每一新行添加一个新数字到列表中?

如何为代码的每一新行添加一个新数字到列表中?
EN

Stack Overflow用户
提问于 2021-11-03 06:39:07
回答 1查看 55关注 0票数 0

附注:如果你想知道,这个账号的所有者和“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,则输出将为

代码语言:javascript
复制
[1]
[1,2]
[2,3,5]
[5,7,10,15]

下面是我的代码:

代码语言:javascript
复制
def append(n: int):
    for x in range(1,n+1):
        return(x,x+1)
    print(append(n))

当我把n= 4,它似乎不起作用,这是什么问题呢?

EN

回答 1

Stack Overflow用户

发布于 2021-11-03 07:24:04

如果你使用 并把它缩短一点,你可以这样写:

代码语言:javascript
复制
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

你现在可以像这样使用这个函数:

代码语言:javascript
复制
for i in func(4):
    print(i)
# Output:
# [1]
# [1,2]
# [2,3,5]
# [5,7,10,15]

作为生成器的

编辑:如果你只是想在函数中输出它,你只需要像@Bibhav说的那样用print()替换yield ():

代码语言:javascript
复制
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的问题。

代码语言:javascript
复制
# 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[:]

然后你可以像这样使用它:

代码语言:javascript
复制
print(list(func(4)))
# Output:
# [[1],[1,2],[2,3,5],[5,7,10,15]]

编辑:如果您想使用return,请执行以下操作:

代码语言:javascript
复制
# 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 ret
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69820591

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档