Pythonic способ проверить, выполняется ли условие для любого элемента списка - PullRequest
94 голосов
/ 27 августа 2009

У меня есть список в Python, и я хочу проверить, являются ли какие-либо элементы отрицательными. В Specman есть метод has() для списков, который:

x: list of uint;
if (x.has(it < 0)) {
    // do something
};

Где it - ключевое слово Specman, сопоставленное каждому элементу списка по очереди.

Я нахожу это довольно элегантным. Я просмотрел документацию Python и не смог найти ничего похожего. Лучшее, что я мог придумать, было:

if (True in [t < 0 for t in x]):
    # do something

Я нахожу это довольно не элегантным. Есть ли лучший способ сделать это в Python?

Ответы [ 3 ]

160 голосов
/ 27 августа 2009

любой ()

if any(t < 0 for t in x):
    # do something

Кроме того, если вы собираетесь использовать «True in ...», сделайте его выражением-генератором, чтобы оно не занимало O (n) памяти:

if True in (t < 0 for t in x):
26 голосов
/ 27 августа 2009

Использование any().

if any(t < 0 for t in x):
    # do something
10 голосов
/ 27 августа 2009

Python имеет встроенную функцию any () именно для этой цели.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...