Sumar una lista de números en Python [duplicado]

Resuelto layo asked hace 14 años • 0 respuestas

Dada una lista de números como:

[1, 2, 3, 4, 5, ...]

¿Cómo calculo su suma total?

1 + 2 + 3 + 4 + 5 + ...

¿Cómo calculo sus promedios por pares?

[(1+2)/2, (2+3)/2, (3+4)/2, (4+5)/2, ...]
layo avatar Dec 06 '10 09:12 layo
Aceptado
Pregunta 1:

Para sumar una lista de números, use sum:

xs = [1, 2, 3, 4, 5]
print(sum(xs))

Esto produce:

15

Pregunta 2:

Entonces quieres (elemento 0 + elemento 1)/2, (elemento 1 + elemento 2)/2, ... etc.

Hacemos dos listas: una de cada elemento excepto el primero y otra de cada elemento excepto el último. Entonces los promedios que queremos son los promedios de cada par tomados de las dos listas. Solemos ziptomar pares de dos listas.

Supongo que desea ver decimales en el resultado, aunque los valores de entrada sean números enteros. De forma predeterminada, Python realiza la división de enteros: descarta el resto. Para dividir las cosas por completo, necesitamos usar números de punto flotante. Afortunadamente, dividir un int por un float producirá un float, por lo que simplemente lo usamos 2.0para nuestro divisor en lugar de 2.

De este modo:

averages = [(x + y) / 2.0 for (x, y) in zip(my_list[:-1], my_list[1:])]
Karl Knechtel avatar Dec 06 '2010 02:12 Karl Knechtel

Para resumir una lista de números:

sum(list_of_nums)

Genere una nueva lista con elementos adyacentes promediados xsusando una lista por comprensión :

[(x + y) / 2 for x, y in zip(xs, xs[1:])]

Sume todos esos elementos adyacentes en un solo valor:

sum((x + y) / 2 for x, y in zip(xs, xs[1:]))
Rafe Kettler avatar Dec 06 '2010 02:12 Rafe Kettler

Pregunta 2: Para sumar una lista de números enteros:

a = [2, 3, 5, 8]
sum(a)
# 18
# or you can do:
sum(i for i in a)
# 18

Si la lista contiene números enteros como cadenas:

a = ['5', '6']
# import Decimal: from decimal import Decimal
sum(Decimal(i) for i in a)
Evans Murithi avatar Jul 12 '2016 12:07 Evans Murithi