Почему я не могу «уступить» внутри асинхронной функции?

Несколько ответов довольно близки к этому, но не совсем закончились тем, что я сделал:

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 )

Я думаю, что вторая версия примерно такая же эффективная, как вы можете получить в небольшом количестве кода. (Больше кода можно использовать для выполнения всей работы в одном сканировании во входной строке, но для большинства рабочих нагрузок это должно быть достаточно.)

15
задан Zero Piraeus 19 November 2017 в 14:42
поделиться