gpt4 book ai didi

python - 创建数组的算法或代码,规则是否符合规定?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:17:53 25 4
gpt4 key购买 nike

我想创建如下二维数组:

例如:

For level 3:


7 => Array[2]

3 6 => Array[1]

1 2 4 5 => Array[0]


i.e. Array = [[1,2,4,5], [3,6], [7]]

.

For level 4:

15 => Array[3]

7 14 => Array[2]

3 6 10 13 => Array[1]

1 2 4 5 8 9 11 12 => Array[0]


i.e. Array = [[1,2,4,5,8,9,11,12], [3,6,10,13], [7,14], [15]]

我需要的是一个以级别数为参数返回数组的函数,如上所述。

即:

def function(level):
''' ..........................


...........................'''
return Array

最佳答案

您的数据结构是递归的,因此很自然地使用递归函数来生成它。

深度depth的树的根节点是n = 2 ** depth - 1;使用位移计算更有效。左子树的根节点为 n//2,右子树除了将 n//2 添加到其所有节点外完全相同。

这是一个生成所需列表的递归生成器。

def btree(depth):
if depth < 1:
return

n = (1 << depth) - 1
yield [n]

a = n // 2
for seq in btree(depth - 1):
yield seq + [u + a for u in seq]

lst = list(btree(4))[::-1]
print(lst)

输出

[[1, 2, 4, 5, 8, 9, 11, 12], [3, 6, 10, 13], [7, 14], [15]]

如果你想按自上而下的顺序打印树行,你可以这样做:

for row in btree(5):
print(row)

输出

[31]
[15, 30]
[7, 14, 22, 29]
[3, 6, 10, 13, 18, 21, 25, 28]
[1, 2, 4, 5, 8, 9, 11, 12, 16, 17, 19, 20, 23, 24, 26, 27]

关于python - 创建数组的算法或代码,规则是否符合规定?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41413281/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com