#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, правильно инициализированный элементами, которые вы хотите сопоставить..