python元组列表中每个元素的总和

Kun*_*eth 3 python tuples list

我想添加包含元组的列表的每个元素.例如,

    >>> list1
    [(0, 1, 2), (3, 4, 5), (6, 7, 8)]
    >>> list2
    [(1, 2, 3), (4, 5, 6), (7, 8, 9)]
Run Code Online (Sandbox Code Playgroud)

答案应该是

     list3 = [(1,3,5),(7,9,11),(13,15,17)]
Run Code Online (Sandbox Code Playgroud)

Mat*_*ock 8

zip是你的朋友.

result = []
for ta, tb in zip(list1, list2):
     t =tuple(a+b for a, b in zip(ta, tb))
     result.append(t)

print result
>> [(1,3,5),(7,9,11),(13,15,17)]
Run Code Online (Sandbox Code Playgroud)

或更多pythonic是:

result = [tuple(a+b for a, b in zip(ta, tb)) for ta, tb in zip(list1, list2)]
print result
>> [(1,3,5),(7,9,11),(13,15,17)]
Run Code Online (Sandbox Code Playgroud)

通过这样做,结果可能只是一个生成器:

result = (tuple(a+b for a, b in zip(ta, tb)) for ta, tb in zip(list1, list2))
Run Code Online (Sandbox Code Playgroud)

  • 我不完全确定我会认为那里的列表理解更多是Pythonic.它的可读性肯定不大.使用timeit我计时两个片段和展开的for循环也稍微快一些(约5%).一般来说,列表comps应该是首选,但嵌套列表comps倾向于在不可读的伏都教上. (2认同)