Махинация со строками и списками

Всем привет. Тут такая задачка возникла. Пользователь вводит строку как в калькулятор: 123+500+456 не важно. И надо сделать вот что.
Раздробить строку с помощью input = list(input), и получаем ['1','2','3','+','5' ...]. И сделать так, чтобы пройтись по этому списку и соединить то, что относиться к числам, а операторы сложения(-,*,/ и т.д) оставить. Получается: ['123','+','500' ...].
Как это реализовать или есть примерно похожий альтернативный способ решения задачи.


Ответы (2 шт):

Автор решения: Сергей

Вот решение "в лоб". Для тестовой строки: s='123+56+244/34-57*26'

получаем ['123', '+', '56', '+', '244', '/', '34', '-', '57', '*', '26']

s = input ()
# Кортеж для проверки на соответствие
mas= ('+','-','/','*')
# Финальный список
list1=[]
# переменная для накопления числа в строковом виде
s_temp=''
# Идем посимвольно по всей строке
for symbol in s:
    # Если символ оператора, то запишем в список накопленное число и оператор 
    if symbol in mas:
        list1.append(s_temp)
        list1.append(symbol)
        # "Обнулим" накопленную строку
        s_temp = ''
    # Не оператор - накапливаем строку
    else:
        s_temp += symbol
# Записываем последнюю накопленную строку
list1.append(s_temp)
print (list1)
→ Ссылка
Автор решения: Stanislav Volodarskiy

Регулярное выражение:

import re


expr = '12+34 - 56 / 78 * 90'
print(re.findall('\d+|[-+*/]', expr))
$ python tokenizer.py
['12', '+', '34', '-', '56', '/', '78', '*', '90']
→ Ссылка