Python 按相反顺序配对两个列表

Python 按相反顺序配对两个列表,python,Python,我想做的是选择列表A中的一项和列表B中的另一项,将它们配对,如下所示: A[0]+B[n], A[1]+B[n-1],.....,A[n]+B[1] 我对循环使用了两个,但不起作用: class Solution(object): def plusOne(self, digits): sum=0 for j in range(len(digits)-1,0,-1) : for i in range(0,len(digits),1): su

我想做的是选择列表A中的一项和列表B中的另一项,将它们配对,如下所示:

A[0]+B[n], A[1]+B[n-1],.....,A[n]+B[1]
我对循环使用了两个
,但不起作用:

class Solution(object):
def plusOne(self, digits):
    sum=0
    for j in range(len(digits)-1,0,-1) :
        for i in range(0,len(digits),1):
            sum=sum+digits[i]*pow(10,j)
    return sum+1
我输入了
[1,2,3]
,我想得到的是
124
, 但是我得到了
661

编辑:

对不起,我上面给出的例子不太清楚

让我们考虑一下
A[1,2,3]
B[6,5,4]

我想要输出
[5,7,9]
,因为
5
1+4
7
2+5
9
3+6

  • 如果您想在相同的列表中来回搜索,或者在相同长度的不同列表中搜索(i和len(lst)-1-i),则只需要一个循环

  • 尽量不要使用诸如
    sum
    list
    tuple
    str
    int
    之类的内置变量名,在某些情况下,它会给您带来一些不好的结果

    class Solution(object):
        def plusOne(self, digits):
            sum_val = 0
            for i in range(len(digits)):
                sum_val += digits[i]*pow(10, len(digits)-1-i)
            return sum_val+1
    
    sol = Solution()
    dig = [1, 2, 3]
    print(sol.plusOne(dig))
    
  • 输出:

    [5, 7, 9]   # zip of 2 same length lists A and B reversed
    [6, 9, 12, 4, 5, 6]   # ziplongest for no matter what length lists
    
    对于
    A=[1,2,3]
    B=[6,5,4]

    您可以使用列表:

    res = [A[i]+B[len(A)-i-1] for i in range(len(A))]
    
    res = [a+b for (a, b) in zip(A, reversed(B))]
    
    zip()
    函数和列表:

    res = [A[i]+B[len(A)-i-1] for i in range(len(A))]
    
    res = [a+b for (a, b) in zip(A, reversed(B))]
    
    结果:

    [5, 7, 9]
    

    您要做的是将数字列表转换为相应的数字(并添加
    1
    )。您可以通过反向列表将数字与其相应的幂次
    10
    配对:

    digits = [1, 2, 3]
    sum(10**i * y for i, y in enumerate(digits[::-1])) + 1
    # 124
    
    您可以使用
    zip
    ,将其应用于其他示例,如下所示:

    A = [1,2,3]
    B = [6,5,4]
    sum(10**i * (x+y) for i, (x, y) in enumerate(zip(B, A[::-1])))
    # 579
    

    无需循环即可执行此操作:

    A = [1,2,3]
    B = [6,5,4]
    
    C = list(map(sum,zip(A,B[::-1]) ))
    
    print(C)
    
    zip()。然后对每一对进行汇总,并根据这些汇总创建一个列表

    映射(函数,iterable)
    将函数应用于iterable的每个元素

    zip()
    在两个列表长度相同时起作用,否则您需要使用默认值
    0

    K = [1,2,3,4,5,6]
    P = list(map(sum, zip_longest(K,C,fillvalue=0)))
    
    print(P)
    
    输出:

    [5, 7, 9]   # zip of 2 same length lists A and B reversed
    [6, 9, 12, 4, 5, 6]   # ziplongest for no matter what length lists
    

    你只需要一个循环..你谈论两个列表A和B,但在你的示例输入中只提到一个列表。你的解释中也没有10^n,因此它不适合你的代码。对不起,我使用了一个错误的示例。让我们考虑两个列表:A[1,2,3],B[6,5,4]。如果我想输出579,我该怎么办?(5是1+4,7是2+5,9是3+6)谢谢你,我现在知道如何解决这类问题没有问题,否决票是一种西方幽默,拿它来说ez。哈哈哈……这是我第二次使用西方网站提问