Уведомления

Группа в Telegram: @pythonsu

#1 Июль 12, 2019 14:56:08

panama555
Зарегистрирован: 2019-02-19
Сообщения: 175
Репутация: +  4  -
Профиль   Отправить e-mail  

Как порезать строку на элементы списка?

Привет!
для решения задачи нужно порезать данную строку по определённой длине и добавить полученные куски как элементы в список
для примера:
дана строка
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)

Офлайн

#2 Июль 12, 2019 15:33:47

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Как порезать строку на элементы списка?

panama555
Не уверен, что это будет понятней


   
alf = "12345qwert12345qwert12345zxc"
print ["".join(filter(None, x)) for x in map(None, *[iter(alf)]*5)]



Офлайн

#3 Июль 12, 2019 15:50:30

panama555
Зарегистрирован: 2019-02-19
Сообщения: 175
Репутация: +  4  -
Профиль   Отправить e-mail  

Как порезать строку на элементы списка?

при запуске вашего кода выскакивает ошибка “TypeError: ‘NoneType’ object is not callable”
Я пока не понял в чём дело?

Офлайн

#4 Июль 12, 2019 16:11:15

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Как порезать строку на элементы списка?

panama555
Я пока не понял в чём дело?
Да не парьтесь, это под второй питон написано, а у вас третий.



Офлайн

#5 Июль 12, 2019 16:32:37

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

Как порезать строку на элементы списка?

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)

Офлайн

#6 Июль 12, 2019 18:38:01

panama555
Зарегистрирован: 2019-02-19
Сообщения: 175
Репутация: +  4  -
Профиль   Отправить e-mail  

Как порезать строку на элементы списка?

С понятностью всё нормально.
Я такой вариант, примерно, и хотел.
Спасибо

Офлайн

#7 Июль 13, 2019 02:20:02

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

Как порезать строку на элементы списка?

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

Офлайн

#8 Июль 13, 2019 10:29:07

panama555
Зарегистрирован: 2019-02-19
Сообщения: 175
Репутация: +  4  -
Профиль   Отправить e-mail  

Как порезать строку на элементы списка?

Я хочу обойтись без доп.модулей, если можно без них обойтись
Предыдущий вариант меня полностью устроил

Отредактировано panama555 (Июль 13, 2019 10:29:53)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version