Python 按相反顺序配对两个列表
我想做的是选择列表A中的一项和列表B中的另一项,将它们配对,如下所示: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[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。哈哈哈……这是我第二次使用西方网站提问