我需要在排序列表中插入一个int。
这是我到目前为止所得到的:
myfun <- function(x) {
if (x is gecode) { # contains pseudocode
return(x)
} else {
myfun(substr(x, 2, nchar(S)))
}
}
这适用于所有一维列表,例如,[1,5,10]。但是,我需要它来处理包含其他列表的任何列表,例如:[1,[5,7 [8,9,10]] 18,22]。
试过这个:
def insert_in_list(x, tree, index=0):
if not tree:
return tree
elif x < tree[index]:
tree.insert(index, x)
return tree
else:
return insert_in_list(x, tree, index+1)
然而,insert_in_list(4,[[2,3,6],8,10]))返回[[[[2,3,4,6]]],4,8,10]。因此,在插入第一个后,递归不会停止。帮助我
答案 0 :(得分:0)
这是因为您需要告诉您的函数停止查找x&lt;找到上限时的项目
这是一个附加信号(变量done
),一旦找到上限就会传播。
def insert_in_list(x, tree, done = False):
for index, item in enumerate(tree):
if isinstance(item, list):
done = insert_in_list(x, item)
elif done:
return True
elif x < item:
tree.insert(index, x)
return True
Additionnaly