【发布时间】:2018-06-29 19:31:33
【问题描述】:
我正在尝试编写一个函数来创建二分法分组列表 f。前任。如果我的输入如下:
[a, b, c, d, e, f, g, h]
我想选择随机整数,它会一次又一次地递归地将其拆分为较小的子列表,直到子列表的长度最大为两个,例如:
[[a, [b, c]], [d, [[e, f], [g, h]]]]
这是我到目前为止得到的,但仍然给了我 TypeError(列表索引必须是整数或切片,而不是列表):
def split_list(l):
if l.__len__() > 2:
pivot = np.random.random_integers(0, l.__len__() - 1)
print(pivot, l)
l = [RandomTree.split_list(l[:pivot])][RandomTree.split_list(l[pivot:])]
return l
我被困住了,我会非常感谢任何建议。
【问题讨论】:
-
RandomTree是什么? -
目前还不完全清楚列表中每个总分组的长度是如何确定的。例如,列表是否应该始终以前三个项目的分组开始?如果列表的长度是 10 而不是 8 怎么办?
-
@Uriel RandomTree 只是我定义 split_list 的类。
-
@Ajax1234 不,这个分组只是一个例子。我想为每次迭代选择随机分组索引(只要子列表大于 2)。
-
好的,鉴于有关成为班级成员的信息,我已经稍微编辑了我的答案。让我知道它是否解决了您的问题
标签: python python-3.x algorithm list recursion