Найти - Пользователи
Полная версия: Помогите написать цикл для списков
Начало » Python для новичков » Помогите написать цикл для списков
1
artems31
Доброго времени сутко!

Не так давно начал кодить на python3 и столкнулся с проблемой.


Как записать список вида
 a = [a, b, c, d, e, f, g, h, ..., ] 
в другой многомерный список, чтобы было
 b = [[a, b, c, d], [i, f, g, h], [i, j, k, l]...] 
и т.д.
Пытался через циклы и срезы, ничего не выходит…


Заранее спасибо!
AD0DE412
 a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
for i in range(0, len(a), 2):
    print(a[i], a[i+1])
else:
    print('stop')
ps https://pythonworld.ru/tipy-dannyx-v-python/isklyucheniya-v-python-konstrukciya-try-except-dlya-obrabotki-isklyuchenij.html
artems31
Спасибо!
py.user.next
На официальном сайте питона есть такая функция

python.org. itertools. recipes

  
>>> import itertools
>>> 
>>> def grouper(iterable, n, fillvalue=None):
...     "Collect data into fixed-length chunks or blocks"
...     # grouper('ABCDEFG', 3, 'x') --> ABC DEF Gxx"
...     args = [iter(iterable)] * n
...     return itertools.zip_longest(*args, fillvalue=fillvalue)
... 
>>> lst = [1, 2, 3, 4, 5, 6, 7]
>>> 
>>> list(grouper(lst, 2))
[(1, 2), (3, 4), (5, 6), (7, None)]
>>> 
>>> list(grouper(lst, 3))
[(1, 2, 3), (4, 5, 6), (7, None, None)]
>>> 
>>> list(grouper(lst, 4))
[(1, 2, 3, 4), (5, 6, 7, None)]
>>> 
>>> list(grouper(lst, 30))
[(1, 2, 3, 4, 5, 6, 7, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None)]
>>>

Можно и свою сделать
  
>>> def group_elements(seq, count):
...     out = []
...     n = 0
...     while True:
...         part = seq[n:n+count]
...         if not part:
...             break
...         out.append(part)
...         n += count
...     return out
... 
>>> lst = [1, 2, 3, 4, 5, 6, 7]
>>> 
>>> group_elements(lst, 2)
[[1, 2], [3, 4], [5, 6], [7]]
>>> group_elements(lst, 3)
[[1, 2, 3], [4, 5, 6], [7]]
>>> group_elements(lst, 4)
[[1, 2, 3, 4], [5, 6, 7]]
>>> group_elements(lst, 5)
[[1, 2, 3, 4, 5], [6, 7]]
>>> group_elements(lst, 20)
[[1, 2, 3, 4, 5, 6, 7]]
>>>
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB