Как мне сделать этот простой список понимания? - PullRequest
4 голосов
/ 28 марта 2010

Я новичок в python, и я пытаюсь лучше узнать список понятий.
Я даже не совсем уверен, что слово «список» - это слово, которое я ищу, потому что я не генерирую список. Но я делаю нечто подобное.

Вот что я пытаюсь сделать:

У меня есть список чисел, длина которых делится на три.

Так скажи, у меня есть nums = [1, 2, 3, 4, 5, 6] Я хочу перебрать список и получить сумму каждой группы из трех цифр. В настоящее время я делаю это:

for i in range(0, len(nums), 3):
    nsum = a + b + c for a, b, c in nums[i:i+3]
    print(nsum)

Я знаю, что это неправильно, но есть ли способ сделать это? Я уверен, что я упустил что-то, возможно, очень простое ... Но я не могу придумать другой способ сделать это.

Ответы [ 3 ]

6 голосов
/ 28 марта 2010

См. sum(iterable[, start]) встроенный и используйте его на ломтиках.

Суммы начинаются и элементы итерируются слева направо и возвращают итоги. start по умолчанию равно 0. Итерируемые элементы обычно являются числами и не могут быть строками.

>>> nums
[1, 2, 3, 4, 5, 6]
>>> [sum(nums[i:i+3]) for i in  range(0, len(nums),3)]
[6, 15]
>>> 
4 голосов
/ 28 марта 2010
import itertools

nums = [1, 2, 3, 4, 5, 6]

print [a + b + c for a, b, c in itertools.izip(*[iter(nums)] * 3)]
1 голос
/ 28 марта 2010
nums = [1, 2, 3, 4, 5, 6]
map(sum, itertools.izip(*[iter(nums)]*3))
...