Самый быстрый способ унифицировать список в Python
Самый быстрый способ унифицировать список в Python без сохранения порядка? Я видел много сложных решений в Интернете - могли ли они быть быстрее, чем просто:
list(set([a,b,c,a]))
Ответ 1
set([a, b, c, a])
Оставьте его в этой форме, если это возможно.
Ответ 2
Переход в набор работает только для списков, так что все их элементы хешируются - так, например, в вашем примере, если c = [], код, который вы укажете, вызовет исключение. Для не-хешируемых, но сопоставимых элементов сортировка списка, а затем использование itertools.groupby для извлечения уникальных элементов из него - лучшее доступное решение (O (N log N)). Если элементы не являются ни хешируемыми, ни сопоставимыми, ваше единственное решение "последнего канава" O(N squared).
Вы можете запрограммировать функцию "uniquify" любого списка, который использует наилучший доступный подход, используя каждый подход в порядке, с try/except вокруг первого и второго (и a return результата либо в конце предложения try, либо, элегантно, в предложении else оператора try; -).