Підсумовування елементів у списку


77

Ось мій код, мені потрібно підсумувати невизначену кількість елементів у списку. Як це зробити?

l = raw_input()
l = l.split(' ')
l.pop(0)

Моє введення: 3 5 4 9 Після введення я видаляю перший елемент через l.pop(0). Після того, як .split(' ')мій список є, ['5', '4', '9']і мені потрібно підсумувати всі елементи цього списку.

У цьому випадку сума дорівнює 18. Зверніть увагу, що кількість елементів не визначена.


@JakobBowyer Мені потрібно видалити перший запис
treng

2
@AshwiniChaudhary хіба це не очевидно? це рядок ... він використав raw_input ()
KurzedMetal

Це відповідає на ваше запитання? Підсумуйте список чисел у Python
AMC

Відповіді:


175

Ви можете підсумовувати числа у списку просто за допомогою вбудованої sum () :

sum(your_list)

Він буде складати стільки елементів, скільки у вас є. Приклад:

my_list = range(10, 17)
my_list
[10, 11, 12, 13, 14, 15, 16]

sum(my_list)
91

Для вашого конкретного випадку :

Для ваших даних перетворіть числа в intперші, а потім підсумуйте їх:

data = ['5', '4', '9']

sum(int(i) for i in data)
18

Це буде працювати для невизначеної кількості елементів у вашому списку (якщо вони є "числами")

Дякуємо за перетворення коментаря @ senderle на випадок, якщо дані мають формат рядків.


Дякуємо за рішення, включаючи перетворення на цілі числа, для мене це працює лише тоді, коли я ставлю дужки [] навколо int (i) для i в даних. Це нормально?
Акі

Так, це нормально. Левон забув дужки.
Ніколас Геддель,

8
>>> l = raw_input()
1 2 3 4 5 6 7 8 9 10
>>> l = l.split()
>>> l.pop(0)
'1'
>>> sum(map(int, l)) #or simply sum(int(x) for x in l) , you've to convert the elements to integer first, before applying sum()
54

6

Ітерабельний Python можна підсумувати так - [sum(range(10)[1:])]. Це підсумовує всі елементи зі списку, крім першого елемента.

>>> atuple = (1,2,3,4,5)
>>> sum(atuple)
15
>>> alist = [1,2,3,4,5]
>>> sum(alist)
15

5

Ви також можете використовувати метод зменшення:

>>> myList = [3, 5, 4, 9]
>>> myTotal = reduce(lambda x,y: x+y, myList)
>>> myTotal
21

Крім того, ви можете змінити лямбда-функцію для виконання інших операцій у вашому списку.


reduceФункція видалена на Python3 до базового-модулю називається functools. src: docs.python.org/3/library/functools.html#functools.reduce
YanivGK

2

Ви можете використовувати sumдля підсумовування елементів списку, однак, якщо ваш список походить raw_input, ви, ймовірно, хочете перетворити елементи на intабо floatспочатку:

l = raw_input().split(' ')
sum(map(int, l))

1

Ви можете використовувати mapвбудовану sum()функцію і вбудовану функцію pythons . Це спрощує рішення. І зменшує складність.
a=map(int,raw_input().split())
sum(a)
Готово!


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.