我需要创建一个返回两个列表的函数。第一个是包含“found”和“dummy”的字符串列表,指示两个列表中的数字相同的元素。第二个列表包含一定数量的整数,范围由参数“colors”给出,该参数返回找到特定数字的次数。目前我已经完成了第一个列表的任务,但第二个列表让我有点困惑。另外,在这个过程中必须使用递归。这是到目前为止的代码
def find(code, guess, colors):
if guess == []:
return []
else:
if guess[0] == code[0]:
return ["found"] + find(code[1:], guess[1:], colors)
else:
return ["dummy"] + find(code[1:], guess[1:], colors)
可能的结果如下:
>>> find([1,2,3],[3,2,1],6)
[[’dummy’, ’found’, ’dummy’], [0, 0, 1, 0, 0, 0]]
最佳答案
我会选择这样的东西:
def find(code, guess, colors):
def sub(code, guess, lst1, lst2):
if guess:
if guess[0] == code[0]:
lst2[code[0]] += 1
return sub(code[1:], guess[1:], lst1+["found"], lst2)
else:
return sub(code[1:], guess[1:], lst1+["dummy"], lst2)
else:
return lst1, lst2
return sub(code, guess, [], [0]*colors)
然后
>>> print(find([1,2,3], [3,2,1], 6))
(['dummy', 'found', 'dummy'], [0, 0, 1, 0, 0, 0])
关于python - 如何在递归期间创建和编辑列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26599162/