我们需要能够创建一个具有1个列表作为输入的函数。我们需要从不均匀数中分离出偶数,并将它们放在单独的列表中。我们不允许列出第二个列表,只能使用递归以及car,cdr,cons,...来解决它。
这是我已经拥有的:
alias ls='ls -F'
我变成了输出:def split_list(list_a):
if null(list_a):
return []
elif not even(car(list_a)):
return cons(car(list_a), split_list(cdr(list_a)))
else:
return cons(splits_lijst(cdr(list_a)), car(list_a))
print(split_list([1, 2, 3, 4]))
应为[1, 3, 4, 2]
我真的不知道如何在不列出次要清单的情况下执行此操作。
只需清楚一点,函数“ split_list”中的函数是car,cdr,cons,null和偶数。在这里,您可以看到这些功能的内容:
[1, 3][2, 4]
答案 0 :(得分:2)
您需要一种在迭代一个列表时制作两个列表的方法。最好的方法是制作一个带有3个参数的函数。一个用于输入,两个用于两个输出列表,通常称为累加器。
逻辑是当您到达列表的末尾时,将返回两个累加器的列表。如果不是,则检查元素的均匀性,然后通过将其添加到偶数累加器进行递归。如果不是,则通过将元素添加到奇数累加器来递归。
答案 1 :(得分:0)
我认为这会对您有所帮助。
object["files[" + index + "]"]
下面的一个将仅使用一个附加列表(以防您不需要原始列表):
l=list(range(10))
evens=[]
odds=[]
for x in l:
if x%2==0:
evens.append(x)
else:
odds.append(x)
print(evens,odds)