Вам нужна реализация pairwise()
(или grouped()
).
Для Python 2:
from itertools import izip
def pairwise(iterable):
"s -> (s0, s1), (s2, s3), (s4, s5), ..."
a = iter(iterable)
return izip(a, a)
for x, y in pairwise(l):
print "%d + %d = %d" % (x, y, x + y)
Или, в более общем смысле:
from itertools import izip
def grouped(iterable, n):
"s -> (s0,s1,s2,...sn-1), (sn,sn+1,sn+2,...s2n-1), (s2n,s2n+1,s2n+2,...s3n-1), ..."
return izip(*[iter(iterable)]*n)
for x, y in grouped(l, 2):
print "%d + %d = %d" % (x, y, x + y)
В Python 3 вы можете заменить izip
на встроенную функцию zip()
и сбросить import
.
Весь кредит martineau за на его ответ на мой вопрос , я нашел, что это очень эффективно, поскольку он только повторяет один раз над списком и не создает лишних списков в процессе.
Примечание: это не следует путать с рецептом pairwise
в собственной документации itertools
Python , которая дает s -> (s0, s1), (s1, s2), (s2, s3), ...
, как указано из @lazyr в комментариях.
Похоже, вы ищете returnKeyType и клавиатураType