Top.Mail.Ru
Ответы

Python, как разделить элементы списка с сохранением пробела

Как

1
 ['D', 'a', 'y', ' ', 'm', 'i', 'c', 'e', ' ', 'Y', 'e', 'a', 'r', ' ', 'i', 's', ' ', 'a', ' ', 'm', 'i', 's', 't', 'a', 'k', 'e'] 

разбить на

1
 ['Day ', 'mice ', 'Year ', 'is ', 'a ', 'mistake'] 


т.е с сохранением пробела после слова, ибо через ''.join(list).split() он удаляется

По дате
По рейтингу
Аватар пользователя
Мудрец
7мес

Код:

1234567891011121314
 from itertools import groupby 
 
def split_with_spaces(lst): 
    # Группируем символы: если текущий и предыдущий символы равны пробелу, они относятся к одной группе. 
    words = [''.join(group) for key, group in groupby(lst, lambda x: x == ' ') if not key] 
    return [word + ' ' if word[-1] != ' ' else word for word in words] 
 
# Исходный список 
lst = ['D', 'a', 'y', ' ', 'm', 'i', 'c', 'e', ' ', 'Y', 'e', 'a', 'r', ' ', 'i', 's', ' ', 'a', ' ', 'm', 'i', 's', 't', 'a', 'k', 'e'] 
 
# Результат 
result = split_with_spaces(lst) 
print(result)  # ['Day ', 'mice ', 'Year ', 'is ', 'a ', 'mistake']