Форум сайта python.su
Всем привет. Изучаю pythоn около месяца, я самоучка.
Не могу решить задачу уже 2 часа, ломаю голову.
У меня есть список:
list = [1,2,3,4,5,6,7,8,9,10,11,12,13,14]
Офлайн
список - это объект который поддерживает итерационный протокол
>>> l = [1, 2, 3] >>> i = iter(l) >>> next(i) 1 >>> next(i) 2 >>> next(i) 3 >>> next(i) Traceback (most recent call last): File "<stdin>", line 1, in <module> StopIteration
>>> def foo(a): ... i = 0 ... while i < a: ... yield i ... i += 1 ... >>> for v in foo(5): ... print(v) ... 0 1 2 3 4 >>>
Офлайн
JOHN_16Ура! Решение)
список - это объект который поддерживает итерационный протокол
Офлайн
>>> lst = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14] >>> >>> while lst: ... print(lst[:3]) ... lst = lst[3:] ... [1, 2, 3] [4, 5, 6] [7, 8, 9] [10, 11, 12] [13, 14] >>>
Офлайн
без изменения начального списка
>>> lst = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,14] >>> for i in range(0,len(lst),3): print(lst[i:i+3]) [1, 2, 3] [4, 5, 6] [7, 8, 9] [10, 11, 12] [13, 14] >>>
Офлайн
Решение py.user.next , marvellik проще для данной задачи. Суть в том, что извлечение среза по несуществующему индексу не вызывает исключение.
Если в задаче требуется часто во многих местах извлекать из последовательностей n-ное количество элементов, то более хорошим стилем будет подход как у JOHN_16. Можно написать ф-ю генератор, которой можно передать последовательность, и количество возвращаемых элементов за одну итерацию - в качестве параметра.
Отредактировано clipper1995 (Март 20, 2018 11:51:52)
Офлайн