Сопоставление переменной с элементами списка в Python?

#python #list #variables #match

#python #Список #переменные #сопоставление

Вопрос:

Я хочу проверить, совпадает ли значение переменной (==) со значением любого элемента данного списка в одной строке

Ответ №1:

использовать in :

 > lst = [1,'r']
> v = 1
> v in lst
True
  

Комментарии:

1. кашель затенение list — это плохо, кашель

2. правда, это было просто для наглядности.

Ответ №2:

РЕДАКТИРОВАТЬ: Я оставлю этот ответ, потому что выражения генератора — полезные звери (особенно вместе с any и all ), но если вы просто тестируете членство в списке, тогда вам следует использовать in .


 any(var == i for i in my_list)
  

Объяснение:

any это функция, которая принимает итерируемый объект и возвращает True, если какой-либо элемент этого итерируемого имеет значение True.

Понимание списка [x == i for i in my_list] — это список логических значений, сравниваемых x с каждым значением в списке по очереди. Если какой-либо из них истинен, то x == i . Итак, если вы вызовете any этот список, вы получите желаемый ответ.

Если вы измените [] на () при написании понимания списка, вы получите вместо этого объект generator, который создает значения по одному за раз, вместо того, чтобы создавать их в памяти. И если вы передаете выражение генератора в качестве единственного аргумента функции, вы можете опустить дополнительный набор круглых скобок, чтобы оставить приведенный выше аккуратный синтаксис.

Существует также функция all .

Комментарии:

1. Гораздо лучше использовать var in my_list