Уведомления

Группа в Telegram: @pythonsu

#1 Июль 13, 2020 16:53:29

artems31
Зарегистрирован: 2020-07-13
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите написать цикл для списков

Доброго времени сутко!

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


Как записать список вида

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


Заранее спасибо!

Отредактировано artems31 (Июль 13, 2020 17:02:01)

Офлайн

#2 Июль 13, 2020 17:28:24

AD0DE412
Зарегистрирован: 2019-05-12
Сообщения: 1130
Репутация: +  44  -
Профиль   Отправить e-mail  

Помогите написать цикл для списков

 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



1. пжлст, форматируйте код, это в панели создания сообщений, выделите код и нажмите что то вроде
2. чтобы вставить изображение залейте его куда нибудь (например), нажмите и вставьте ссылку на его url

есчщо

Отредактировано AD0DE412 (Июль 13, 2020 17:32:54)

Офлайн

#3 Июль 13, 2020 23:07:52

artems31
Зарегистрирован: 2020-07-13
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите написать цикл для списков

Спасибо!

Офлайн

#4 Июль 14, 2020 01:53:57

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10022
Репутация: +  857  -
Профиль   Отправить e-mail  

Помогите написать цикл для списков

На официальном сайте питона есть такая функция

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]]
>>>



Отредактировано py.user.next (Июль 14, 2020 01:56:45)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version