Добавьте дубликаты в набор или проверьте, существуют ли элементы, затем добавьте - PullRequest
1 голос
/ 04 марта 2020

Используя наборы в python, я хочу добавить в свой набор много элементов, некоторые из которых, вероятно, уже существуют в этом наборе.

Быстрее ли добавлять элементы в набор без проверки, если он уже или быстрее проверить, существует ли каждый элемент в наборе, и добавить только, если его там нет?

Ответы [ 4 ]

1 голос
/ 05 марта 2020

Вы не можете добавлять дубликаты в набор, поэтому нет смысла проверять. См. Документацию Python для наборов:

https://docs.python.org/2/tutorial/datastructures.html#sets

Набор представляет собой неупорядоченную коллекцию без повторяющихся элементов. Основы использования c включают тестирование членства и устранение дублирующихся записей. Вы можете попытаться добавить дубликат, и он не добавит его в набор. Он просто проигнорирует это.

p = set([2,3,4,5])

p.add(99) # try to add 99 to existing set
print p
    result: set([99, 2, 3, 4, 5])
p.add(99) # try to add 99 again. Notice the set doesn't change
print p
    result: set([99, 2, 3, 4, 5])
1 голос
/ 05 марта 2020

Это быстрее, чтобы добавить без проверки. Каждый раз, когда вы добавляете элемент к набору, он должен проверить, что его там нет - проверка перед этим не экономит ваше время, если элемент есть, но тратит время, если его нет, как будет проверено дважды.

0 голосов
/ 05 марта 2020

Вам не нужно проверять!

В том-то и дело с наборами, у них нет дубликатов. Посмотрите на документы , в них четко указано, что в наборах нет дубликатов. Если дубликат пытается быть добавлен в набор, компилятор «игнорирует его» и переходит к следующему фрагменту кода.

0 голосов
/ 05 марта 2020

Если вы хотите проверить, есть ли у вас новый элемент для вашего списка, вы можете использовать этот код:

yourlist=[1,2,3,4,5] #This is only needed if you are checking for duplicate numbers
newitem=2
new=1
for i in range(len(yourlist)):
    if yourlist[i]==newitem:
    new=0
if new==1:
    yourlist.append(newitem)
print(yourlist)

Надеюсь, это поможет!

...