Подтвердить что ты не робот

Проверьте, существует ли число в списке в python

Я пишу код python, где я буду добавлять числа в список, но я не хочу, чтобы числа в списке повторялись. Итак, как я могу проверить, есть ли число в списке, прежде чем я сделаю list.append()?

4b9b3361

Ответ 1

Вы могли бы сделать

if item not in mylist:
     mylist.append(item)

Но вы действительно должны использовать набор, например:

myset = set()
myset.add(item)

РЕДАКТИРОВАТЬ: Если заказ важен, но ваш список очень велик, вы, вероятно, должны использовать как список, так и набор, например:

mylist = []
myset = set()
for item in ...:
    if item not in myset:
        mylist.append(item)
        myset.add(item)

Таким образом, вы быстро просматриваете существование элемента, но вы сохраняете свой заказ. Если вы используете наивное решение, вы получите O (n) производительность для поиска, и это может быть плохо, если ваш список большой

Или, как указал @larsman, вы можете использовать OrderedDict с тем же эффектом:

from collections import OrderedDict

mydict = OrderedDict()
for item in ...:
    mydict[item] = True

Ответ 2

Если вы хотите иметь уникальные элементы в своем списке, то почему бы вам не использовать набор, если, конечно, заказ не имеет значения для вас: -

>>> s = set()
>>> s.add(2)
>>> s.add(4)
>>> s.add(5)
>>> s.add(2)
>>> s
39: set([2, 4, 5])

Если заказ вызывает озабоченность, вы можете использовать: -

>>> def addUnique(l, num):
...     if num not in l:
...         l.append(num)
...     
...     return l

Вы также можете найти OrderedSet рецепт, о котором говорится в Документация на Python

Ответ 3

Если вы хотите, чтобы ваши номера в порядке возрастания, вы можете добавить их в набор, а затем отсортировать набор в восходящем списке.

s = set()
if number1 not in s:
  s.add(number1)
if number2 not in s:
  s.add(number2)
...
s = sorted(s)  #Now a list in ascending order

Ответ 4

Вместо этого вы можете использовать заданный объект. Только цифры add для набора. Они по своей сути не реплицируются.