Как разделить строку на список с элементами, сгруппированными по парам (Python)?
Дана строка s(''), содержащая элементы s[0], s[1], s[2]... (всего в строке не более 50 символов). Требуется получить из нее список l, элементы которого - строки, состоящие из элементов строки s, но сгруппированные попарно l =['s[0]+s(1)', 's[2]+s(3)'...]. Подскажите, пожалуйста, наиболее ресурсосберегающий алгоритм
Александр: ну на мой взгляд, любой вопрос можно рассматривать как задание, и наоборот (поправьте, если что). Совсем недавно полюбил программирование, поэтому в этом деле очень зеленый.
То что родилось у меня в голове, даже показывать не хотел:
1) переводим строку в список с помощью l0 = list(s)
2) создаем список нечетных элементов l1 = l0[::2]
3) создаем список четных элементов l2 = l0[1::2],
4) l = zip(l1,l2).
Здесь маленько застрял, потому что получился список в списке, насколько понял, а в идеале нужен список строк (но в принципе и с этим уже могу работать). Чую нутром, это делается проще:)
Всегда приводите то как вы это смогли решить, тогда это не будет выглядеть заданием. Будет видно что вы пытались что то сделать, а не надеетесь на готовый ответ. То что вы расписали нормальное решение. Можно покороче записать: [i+j for i,j in zip(s[::2], s[1::2])].
Александр:
О ресурсах беспокоился топикстартер.
Таймингам верю, но:
уже с юникодом (py3) скорее всего будет не так
в PyPy будет не так
а если не по 2, а по три буквы? а по 4? ваш вариант менее гибкий.
слайсы, переданные в зип, - это таки ресурсы )))