Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem Python - Sečtení prvků dvou stejně velkých a stejně strukturovaných seznamů

Ahoj,

existuje v Pythonu vestavěná funkce nebo metoda, která by sečetla dva seznamy, které se liší jen hodnotami prvků?

Konkrétně kdyby na vstupu bylo:

a = [ [1,2], [3,4], [5,6] ]
b = [ [10,10], [10,10], [10,10] ]

Pak výstup by byl:

[ [11,12], [13,14], [15,16] ]

Samozřejmě není problém napsat cyklus for, který seznamy sečte podle uvedeného principu, ale pokud by toto "uměl" jazyk sám, je o něco méně práce :)

Předmět Autor Datum
[ [ sum (q) for q in zip(*x) ] for x in zip(a,b,c) ] POSTUP: >>> a = [ [1,2], [3,4], [5,6] ] >>>… poslední
gilhad 11.12.2020 04:41
gilhad

[ [ sum (q) for q in zip(*x) ] for x in zip(a,b,c) ]

POSTUP:


>>> a = [ [1,2], [3,4], [5,6] ]
>>> b = [ [10,10], [10,10], [10,10] ]
>>> [ [ x[0]+y[0] , x[1]+y[1] ] for (x,y) in zip(a,b) ]
[[11, 12], [13, 14], [15, 16]]

nebo obecneji

>>> a = [ [1], [2,3], [1,2,3], [4,5,6], [7,8,9] , [10,20,30,40] ]
>>> b = [ [100], [200,300], [10,20,30], [40,50,60], [70,80,90] , [-1,-2,-3,-4] ]
>>> [ [ sum (q) for q in zip(x,y) ] for (x,y) in zip(a,b) ]
[[101], [202, 303], [11, 22, 33], [44, 55, 66], [77, 88, 99], [9, 18, 27, 36]]

nebo jeste obecneji


>>> a = [ [1], [2,3], [1,2,3], [4,5,6], [7,8,9] , [10,20,30,40] ]
>>> b = [ [100], [200,300], [10,20,30], [40,50,60], [70,80,90] , [-1,-2,-3,-4] ]
>>> c = [ [1000], [2000,3000], [1000,2000,3000], [4000,5000,6000], [7000,8000,9000] , [10000,20000,30000,40000] ]
>>> [ [ sum (q) for q in zip(*x) ] for x in zip(a,b,c) ]
[[1101], [2202, 3303], [1011, 2022, 3033], [4044, 5055, 6066], [7077, 8088, 9099], [10009, 20018, 30027, 40036]]

https://docs.python.org/3/tutorial/datastructures.html#list-comprehensions
https://docs.python.org/3/library/functions.html#zip

Zpět do poradny Odpovědět na původní otázku Nahoru