Есть ли аналогичная стандартная функция в Python?
Есть ли стандартная функция в Python, которая добавит элемент в список, если его нет?
Вот код, как должна работать, если не понятно, что написал)):
def add_is_not_element(element, lst):
cash = copy.deepcopy(lst)
if element not in cash:
cash.append(element)
return cash
ДОПОЛНЕНИЕ:
Множества не предлагать. По этой причине (на входе список и если его преобразовать во множество, добавить элемент и преобразовать обратно в список (т.к. вернуть надо список), то нарушится последовательность):
input_lst = ['a', 'z']
cash_mn = set(input_lst)
cash_mn.add('v')
out_lst = list(cash_mn)
print(out_lst) # ['v', 'a', 'z']
Ответы (3 шт):
Стандартной такой функции нет.
Для ускорения проверки можно параллельно хранить множество, новые элементы добавлять и в список, и в множество, проверять наличие через множество:
input_lst = ['a', 'z']
cash_mn = set(input_lst)
item = "v"
if item not in cash_mn:
cash_mn.add(item)
input_lst.append(item)
print(input_lst) # ['v', 'a', 'z']
Также можно воспользоваться тем свойством словарей, что они "помнят" порядок добавления ключей (начиная с версий Python 3.6-3.7), и добавлять элементы как ключи словаря (с любым значением), потом в готовый список собирать ключи:
input_lst = ['a', 'z']
cash_mn = {key: None for key in input_lst}
cash_mn["v"] = None
cash_mn["z"] = None
out_lst = list(cash_mn.keys())
print(out_lst) # ['a', 'z', 'v']
можно еще такой костыль придумать: добавлять без проверки, а потом избавляться от дубликатов
l = ['b','c','a']
l.append('b')
l = list(dict.fromkeys(l))
>>> l # ['b', 'c', 'a']