Python附加括号中的递归

时间:2014-03-10 03:37:42

标签: python recursion brackets

不知道我哪里出错了,但它给了我[-1, [-2, [-3, []]]]而不是[-1,-2,-3]

def search(list1,list2):
    if list2 == []:
        return list1
    elif list2[0] == list1[0]:
        return [-list1[0] , search(list1[1:],list2[1:])]

print search([1,2,3],[1,2,3])

2 个答案:

答案 0 :(得分:2)

我不完全确定你的函数的目标是什么(为什么返回匹配值的负数?),但是你可以通过在return语句中连接列表来获得预期的输出:

def search(list1,list2):
    if list2 == []:
        return list1
    elif list2[0] == list1[0]:
        return [-list1[0]] + search(list1[1:],list2[1:])

print search([1,2,3],[1,2,3])
# Output:
# [-1, -2, -3]

答案 1 :(得分:1)

如果你想搜索两个列表中位于相同位置的元素并使用它们创建列表但是改变它们的符号,你不需要它,你可以这样做:

A = [1,2,3]
B = [1,2,3]

print [ -i for i,j in zip(A,B) if i == j]