Как поместить в список слова, которые стоят после каждого двоеточия
На ввод подается строка, состоящая из пар число:слово, по типу:
70:ztuebs 0:zdhkpq 54:jkyfmo 16:ducsvpq 85:ntsaw
Мне необходимо в одну строчку написать код, который поместит в список только слова из строки. Я пытался сделать так:
a = [input().split(':')[1]]
но код не работает правильно, он пишет слово после двоеточия, но только одно и как бы ещё пишет уже продолжение строки, включая все числа и слова и даже двоеточие. Оно понятно, потому что строка одна и программа отрезает только ту часть, которая стоит до первого двоеточие, а ещё она не учитывает, что после каждого пробела надо заново просматривать элемент и на выходе получается так:
['ztuebs 0']
а мне нужен такой результат:
['ztuebs', 'zdhkpq', 'jkyfmo', 'ducsvpq', 'ntsaw']
как можно код улучшить? Нельзя использовать set, list, dict. Но можно использовать for и if и так далее, главное чтобы в одну строчку уложилось.
Ответы (2 шт):
алгоритм:
разбейте строку на слова по разделителю
' 'пройдитесь по всем словам и разбейте их на слова по разделителю
':'в новый массив добавьте вторые слова из разбиения 2)
вариант 1:
text = "70:ztuebs 0:zdhkpq 54:jkyfmo 16:ducsvpq 85:ntsaw"
res = list(map(lambda obj: obj.split(':')[1], text.split()))
print(res)
вариант 2:
res = [*map(lambda obj: obj.split(':')[1], text.split())]
вариант 3:
res = [i.split(':')[1] for i in text.split()]
s = "70:ztuebs 0:zdhkpq 54:jkyfmo 16:ducsvpq 85:ntsaw"
[x.split(':').pop() for x in s.split()]
есди нельзя pop(), напишите x.split()[1]