Я ищу способ группировать числа из списка, перебирая их, если они попадают в диапазон.Определить группы чисел в списке?
, например, здесь приведен список номеров:
days = [18, 19, 26, 9, 15, 16, 22, 2, 9, 15, 16, 23, 28, 30, 6, 13, 19, 20, 25,27,
4, 11, 17, 18, 25, 1, 8, 14, 15, 22, 27, 29, 6, 13, 19, 20, 26, 27,
3, 10, 16, 17, 24, 25, 31, 7, 14, 20, 21, 26, 28, 5, 12, 18, 19, 26,
2, 9, 15, 16, 23, 27, 30, 7, 14, 20, 21, 28]
В то время как цикл по списку, я хочу, чтобы сгруппировать их в список кортежей, если число больше 1, что и меньше, чем 32 например [(18, 19, 26), (9, 15, 16, 22)]
и т.п ...). У кого-нибудь есть разумный способ сделать это?
Я пробовал использовать рецепты из библиотеки itertools, но сработал.
пример:
for k, g in groupby(enumerate(days), lambda (i,x):x in date_range):
print map(itemgetter(1), g)
этот пример будет генерировать списки последовательных чисел. Я ценю любую помощь.
Что определяет длину каждого кортежа? В вашем примере это кажется случайным ... –
* например [(18, 19, 26), (9, 15, 16, 22)] и т. Д. * Я не могу понять, что * и т. Д. * Будет , –
Разделяете ли вы, когда два значения не являются инкрементальными? –