元组或列表python上的逐元素加法

tpgth1q7  于 2023-05-05  发布在  Python
关注(0)|答案(7)|浏览(198)

我想知道是否有人可以教我如何在不使用zip,numpy数组或任何这些模块的情况下对元组或列表进行元素明智的添加?
例如,如果我有:

a = (1,0,0,1)
b = (2,1,0,1)

我如何获得:(3,1,0,2)而不是(1,0,0,1,2,1,0,1)

idfiyjo8

idfiyjo81#

您可以使用operator.add完成此操作

from operator import add
>>>map(add, a, b)
[3, 1, 0, 2]

单位:python3

>>>list(map(add, a, b))
fcy6dtqo

fcy6dtqo2#

列表解析真的很有用:

[a[i] + b[i] for i in range(len(a))]
h22fl7wq

h22fl7wq3#

你可以使用map函数,看这里:https://docs.python.org/2/tutorial/datastructures.html#functional-programming-tools

map(func, seq)

例如:

a,b=(1,0,0,1),(2,1,0,1)
c = map(lambda x,y: x+y,a,b)
print c
11dmarpk

11dmarpk4#

如果两个列表的长度不相同,这将保存您的时间:

result = [a[i] + b[i] for i in range(min(len(a), len(b))]
lfapxunr

lfapxunr5#

这可以通过简单地迭代列表的长度(假设两个列表具有相等的长度)并将两个列表中该索引处的值相加来完成。

a = (1,0,0,1)
b = (2,1,0,1)
c = (1,3,5,7)
#You can add more lists as well
n = len(a)
#if length of lists is not equal then we can use:
n = min(len(a), len(b), len(c))
#As this would not lead to IndexError
sums = []
for i in xrange(n):
    sums.append(a[i] + b[i] + c[i]) 

print sums
enxuqcxy

enxuqcxy6#

这里有一个解决方案,它可以很好地处理深度嵌套列表或元组,也可以处理浅嵌套列表或元组

import operator
        def list_recur(l1, l2, op = operator.add):
            if not l1:
                return type(l1)([])
            elif isinstance(l1[0], type(l1)):
                return type(l1)([list_recur(l1[0], l2[0], op)]) + \
list_recur(l1[1:],l2[1:], op)
            else:
                return type(l1)([op(l1[0], l2[0])]) + \
list_recur(l1[1:], l2[1:], op)

它(* 默认 *)执行元素加法,但您可以指定更复杂的函数和/或lambda表达式(前提是它们是二进制的)

fjnneemd

fjnneemd7#

将list comprehension与zip结合使用:

>>> tuple(x+y for x,y in zip(a,b))
(3, 1, 0, 2)

相关问题