创建列表的三角形结构,其中包含左下角的数字

乔纳斯·帕拉西翁(JonasPalačionis):

我正在尝试创建一个看起来像这样的结构,它可以容纳的项目数为n:

7
4 8
2 5 9
1 3 6 10

并将其转换为这样的列表:

[[1, 3, 6, 10],[2, 5, 9],[4, 8],[7]]

我无法解决这个问题,我发现每个项目先增加1,然后2增加3依此类推,但是我不希望它们存储的方式。

fn(6)

[[1 3 6],[2 5],[4]]
JakobVinkas:

我一定是有史以来最友善的人,但是测试似乎很有趣。这是一个起作用的函数:

def fn(input):
    output = []

    # First row:
    row = [1]
    incrementor = 2
    while row[-1]+incrementor <= input:
        row.append(row[-1]+incrementor)
        incrementor += 1
    output.append(row)

    # Rest of rows:
    for i in range(len(output[0])-1):
        output.append([e-1 for e in output[-1][1:]])


print(fn(10))

>> [[1, 3, 6, 10], [2, 5, 9], [4, 8], [7]]

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章