Несколько ответов довольно близки к этому, но не совсем закончились тем, что я сделал:
def uniques( your_string ):
seen = set()
return ' '.join( seen.add(i) or i for i in your_string.split() if i not in seen )
Конечно, если вы хотите, чтобы он был немного чистым или быстрым, мы можем немного реорганизовать :
def uniques( your_string ):
words = your_string.split()
seen = set()
seen_add = seen.add
def add(x):
seen_add(x)
return x
return ' '.join( add(i) for i in words if i not in seen )
Я думаю, что вторая версия примерно такая же эффективная, как вы можете получить в небольшом количестве кода. (Больше кода можно использовать для выполнения всей работы в одном сканировании во входной строке, но для большинства рабочих нагрузок это должно быть достаточно.)