Форум сайта python.su
Привет!
для решения задачи нужно порезать данную строку по определённой длине и добавить полученные куски как элементы в список
для примера:
дана строка
alf=“12345qwert12345qwert12345zxc”
нужно порезать строку по 5 символов и в ставить полученные куски в список list_alf
в данном примере значение полученного списка должен быть таким:
list_alf->“12345”,“qwert”,“12345”,“qwert”,“12345”,“zxc”
я сделал это вот таким образом:
alf="12345qwert12345qwert12345zxc" list_alf=[] while alf!="": list_alf.append(alf[:5]) alf=alf[5:] print(list_alf)
Отредактировано panama555 (Июль 12, 2019 14:57:37)
Офлайн
panama555
Не уверен, что это будет понятней
alf = "12345qwert12345qwert12345zxc" print ["".join(filter(None, x)) for x in map(None, *[iter(alf)]*5)]
Офлайн
при запуске вашего кода выскакивает ошибка “TypeError: ‘NoneType’ object is not callable”
Я пока не понял в чём дело?
Офлайн
panama555Да не парьтесь, это под второй питон написано, а у вас третий.
Я пока не понял в чём дело?
Офлайн
panama555
Есть ли вариант короче, лучше, понятнее?
alf="12345qwert12345qwert12345zxc" chunk_size=5 print([alf[i:i+chunk_size] for i in range(0, len(alf), chunk_size)]) >>> ['12345', 'qwert', '12345', 'qwert', '12345', 'zxc'] >>>
[code python][/code]
Отредактировано PEHDOM (Июль 12, 2019 16:36:04)
Офлайн
С понятностью всё нормально.
Я такой вариант, примерно, и хотел.
Спасибо
Офлайн
>>> import itertools >>> >>> alf = '12345qwert12345qwert12345zxc' >>> >>> list(map(''.join, itertools.zip_longest(*[iter(alf)] * 5, fillvalue=''))) ['12345', 'qwert', '12345', 'qwert', '12345', 'zxc'] >>>
Отредактировано py.user.next (Июль 13, 2019 02:24:08)
Офлайн
Я хочу обойтись без доп.модулей, если можно без них обойтись
Предыдущий вариант меня полностью устроил
Отредактировано panama555 (Июль 13, 2019 10:29:53)
Офлайн