Проверьте, равен ли элемент одному из многих элементов в Python

#python

#python

Вопрос:

Я хочу проверить, равен ли элемент из списка какому-либо одному элементу из заданного набора из n элементов, если да, сделайте что-нибудь.

Например, наиболее интуитивно понятный, но, конечно, громоздкий и уродливый способ:

 for item in List:
    if (item == element1) or (item == element2) or ... or (item == elementn):
        do something
  

Каковы лучшие способы проверки?

Ответ №1:

Вы используете in оператор:

 elements = set((element1, element2, ..., elementn))
...
if item in elements:
   do something
  

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

Кроме того, если элементы не меняются в вашем цикле, вы должны инициализировать коллекцию вне цикла, чтобы избежать накладных расходов на создание набора / кортежа каждый раз.

Ответ №2:

 for item in my_ist:
    if item in (element1, element2, ..., elementn):
        # do something
  

Если порядок и частота элементов в my_list не имеет значения, вы также можете использовать

 for item in set(my_list) amp; set((element1, element2, ..., elementn)):
    # do something
  

Ответ №3:

Вы можете просто if item in list2: do something использовать list2, правильно инициализированный элементами, которые вы хотите сопоставить..