a = 'pol xxx nog yyy len'
'pol len nog xxx yyy'
. for ... in
с поиском совпадений по условиям'pol len'
.'pol len xxx nog yyy'
. Но последовательность слов в этой сроке не является логически завершенной, строка должна иметь такой вид: 'pol len nog xxx yyy'
.a = 'len asd sas nas sda orr' # исходная строка
x = a.split(' ') # формируем из нее массив
r.append(x[0]) # берем первый элемент с которого начнем
del x[0] # удаляем чтобы не мешал
while (len(x) > 0): # пока исходный массив не пустой
z = False # проверка на то, что слово начинается с последней буквы предыдущего слова
for i in x:
if (i[0] == r[-1][-1]): # если начинается, то добавляем в массив
r.append(i)
del x[x.index(i)]
z = True
break
if (not z): # если слово не найдено, то дописываем оставшиеся
r.extend(x)
x = []
r
>>> ['len', 'nas', 'sas', 'sda', 'asd', 'orr']
word_list = input_string.split(' ')
while <в word_list есть слово начинающееся с нужной буквы>:
добавить это слово в конец результата
убрать добавленное слово из word_list
отсортировать оставшиеся в word_list слова
добавить их в ответ
str1 = 'pol xxx nog yyy len'
mass = [x for x in str1.split(' ')]
res = []
res.append(mass.pop(0))
out = filter(lambda x: x[0]==res[-1][-1], mass)
while len(out)!=0:
res.append(out[0])
mass.pop(mass.index(out[0]))
out = filter(lambda x: x[0]==res[-1][-1], mass)
res += mass
print res
>>> str1 = 'pol xxx nog yyy len'
>>> mass = [x for x in str1.split(' ')]
>>> res = []
>>> res.append(mass.pop(0))
>>> out = filter(lambda x: x[0]==res[-1][-1], mass)
>>> while len(out)!=0:
... res.append(out[0])
... mass.pop(mass.index(out[0]))
... out = filter(lambda x: x[0]==res[-1][-1], mass)
...
'len'
'nog'
>>> res
['pol', 'len', 'nog']
>>> mass
['xxx', 'yyy']
>>> res += mass
>>> res
['pol', 'len', 'nog', 'xxx', 'yyy']