Как я суммирую первое значение в каждом кортеже в списке кортежей в Python?

Список не был инициализирован с новым экземпляром списка.

orders.ItemList = new List<Items>();

Код будет выглядеть так:

Orders orders = new Orders();
orders.ItemList = new List<Items>();
for (int i = 1; i < 10; i++)
{
    Items itm = new Items
    {
        ItemName = $"Item {i}"
    };
    orders.ItemList.Add(itm);
}
27
задан gsamaras 15 May 2016 в 02:06
поделиться

4 ответа

Версия, совместимая с Python 2.3,

sum([pair[0] for pair in list_of_pairs])

или в последних версиях Python, см. этот ответ или этот .

60
ответ дан David Z 28 November 2019 в 04:02
поделиться
sum(i for i, j in list_of_pairs)

сделает также.

37
ответ дан SilentGhost 28 November 2019 в 04:02
поделиться

Если у Вас есть очень большой список или генератор, который производит большое количество пар, Вы могли бы хотеть использовать основанный на генераторе подход. Для забавы я использую itemgetter() и imap(), также. Простой основанный на генераторе подход мог бы быть достаточно, все же.

import operator
import itertools

idx0 = operator.itemgetter(0)
list_of_pairs = [(0, 1), (2, 3), (5, 7), (2, 1)]
sum(itertools.imap(idx0, list_of_pairs))

Примечание, что itertools.imap() доступно в Python> = 2.3. Таким образом, можно использовать основанный на генераторе подход там, также.

5
ответ дан borlafu 28 November 2019 в 04:02
поделиться

Неясный (но забава) ответ:

>>> sum(zip(*list_of_pairs)[0])
9

Или когда zip iterables только, это должно работать:

>>> sum(zip(*list_of_pairs).__next__())
9
3
ответ дан SilentGhost 28 November 2019 в 04:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: