Как убрать лишние пробелы в реализации метода split() с помощью цикла?

Дана строка:

sentence = 'My favourite tutor in academy'

мой код:

sent_list = []    
word = ''
for i in range(len(sentence)):
    word += sentence[i]
    if sentence[i] == ' ' or i == len(sentence) - 1:
        sent_list.append(word[:i])
        word = ''
print(sent_list) 
При распечатке списка sent_list все слова кроме крайних получаются с лишним пробелом

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

Автор решения: CrazyElf

Починить ваш код можно, если заменить:

word += sentence[i]

Таким тернарным if, не дающим добавлять в word пробел:

word += sentence[i] if sentence[i] != ' ' else ''

Вывод:

['My', 'favourite', 'tutor', 'in', 'academy']

Можно и обычный if сделать:

if sentence[i] != ' ':
   word += sentence[i]

Но в этом случае будет подряд повторяться похожий if в коде, что не очень хорошо будет выглядеть.

P.S. Тернарный оператор word += sentence[i] if sentence[i] != ' ' else '' является "синтаксическим сахаром" для следующей конструкции:

if sentence[i] != ' '
    word += sentence[i]
else:
    word += ''

В данном примере в нём нет особого смысла (блок else тут ничего фактически не делает), но часто тернарный оператор бывает удобен и знать его нужно.

→ Ссылка