Стиль для проверки нескольких элементов в последовательности Python - PullRequest
2 голосов
/ 15 декабря 2011

Я часто пишу такой код:

tupla = (1, 2, 3, 4)
if (1 in tupla) and (4 in tupla):
    ...

Есть ли какой-нибудь Pythonic способ написать это более компактно, без ввода tupla дважды?

Ответы [ 2 ]

5 голосов
/ 15 декабря 2011
if all(x in tupla for x in list_of_x):

или

if set(list_of_x).issubset(set(tupla)):

Первый остановится, как только первый x не войдет в tupla. Второй создаст оба набора в любом случае.

2 голосов
/ 15 декабря 2011

То, что спрашивает ваш код, по сути

Является ли [1, 4] подмножеством из tupla?

Вы можете задать этот вопрос напрямую:

In [14]: set([1, 4]).issubset(tupla)
Out[14]: True

In [15]: set([1, 4, 7]).issubset(tupla)
Out[15]: False

или, точнее:

In [18]: set([1, 4]) <= set(tupla)
Out[18]: True

In [19]: set([1, 4, 7]) <= set(tupla)
Out[19]: False
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...