Это может быть сделано в амортизированном O (n) с использованием набора на основе хэш-таблицы.
Псевдоэкс:
s := new HashSet
c := 0
for each el in a
Add el to s.
If el was not already in s, move (copy) el c positions left.
If it was in s, increment c.
легкий устойчивый межплатформенный путь и работа в pipenv также:
pip freeze
pip uninstall -r requirement
pipenv:
pipenv run pip freeze
pipenv run pip uninstall -r requirement
, но не обновит piplock или pipfile так быть знающий
pip3 freeze --local | xargs pip3 uninstall -y
случай мог бы быть то, что нужно выполнить эту команду несколько раз для получения пустого pip3 freeze --local
.
Я справился в Windows просто путем выполнения следующего:
pip freeze > reqs.txt
Это сделает файл требований под названием reqs.txt, я тогда удаляю все из того файла требований:
pip uninstall -r reqs.txt
del reqs.txt
я полагаю, что это решение является и простым и межплатформенным.