Я пишу код python, где я буду добавлять числа в список, но я не хочу, чтобы числа в списке повторялись. Итак, как я могу проверить, есть ли число в списке, прежде чем я сделаю list.append()
?
Проверьте, существует ли число в списке в python
Ответ 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
для набора. Они по своей сути не реплицируются.