TGTGInsighttelegram intelligenceLIVE / telegram public index
← Python Заметки

TGINSIGHT SIMILAR POSTS

Најди сличен содржај

Изворен канал @pythonotes · Post #42 · 24 фев.

Как удалить из списка повторяющиеся элементы, сохранив порядок? array = ['item1', 'item2', 'item3', 'item3', 'item1', 'item3', 'item2', 'item4'] Обычно используют преобразование в множество и обратно unq = list(set(array)) Но такой способ ломает порядок элементов. Правильный алгоритм выглядит так: 🔸Способ 0 unq = [] for item in array: if item not in unq: unq.append(item) Теперь посмотрим как это записать короче 🔸 Способ 1 Создаем пустой список и в простом генераторе сначала проверяем а потом добавляем элемент если его еще нет в списке. unq = [] [unq.append(item) for item in array if item not in unq] 🔸 Способ 2 Аналогичный, но с помощью set(). _set = set() unq = [x for x in array if x not in _set and not _set.add(x)] Здесь вторая проверка это хитрый "костыль". Функция на самом деле ничего не возвращает, просто нам надо её вызвать сразу после первой проверки, если она вернула True. Ответ функции add() инвертируем с помощью not чтобы оба условия сработали. 🔸 Способ 3 В одну строку как обычно с помощью set, но с последующей сортировкой для восстановления порядка. unq = sorted(list(set(array)), key=array.index) 🔸Способ 4 Здесь используем тот факт, что в словаре два одинаковых ключа быть не может и что ключи словаря теперь упорядочены (Python3+). Преобразуем элементы в ключи словаря и обратно в список. unq = list(dict.fromkeys(array)) ____________________ Способы 2-4 НЕ подходят, если элементы списка нехешируемые. То есть они не могут быть в качестве ключа словаря или элемента множества. Например, если у вас список словарей. В этом случае подходит только Способ 1. #tricks

Hashtags

Резултати

Пронајдени 1 слични објави

Глобално пребарување

sudo recast

@sudo_recast · Post #918 · 17.04.2025 г., 09:47

A useful command when you encounter conflicts while cherry-picking: tig HEAD $(git rev-parse CHERRY_PICK_HEAD 2>/dev/null) -- $(git diff --name-only --diff-filter=U | head -1) #tricks@sudo_recast

Hashtags