#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