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

У меня есть список в Python, и я хочу проверить, если какие-либо элементы являются отрицательными. Спецман имеет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)

любой() Функция именно для этой цели.

 Rory12 янв. 2012 г., 11:55
Вместо сложной ifilter thingie, просто выполните: def any (it): для el в нем: if el: return True; вернуть Ложь
 Gregg Lind01 сент. 2009 г., 05:57
Только 2,5+ В противном случае вы должны создать функцию, возможно, используя ifilter и исключения, или bool (set ((x для x, если cond))) или тому подобное.

Используйтеany()

if any(t < 0 for t in x):
    # do something
Решение Вопроса

любой():

Кроме того, если высобираюсь использоватьПравда в ... », сделайте это выражением генератора, чтобы оно неt взять O (n) памяти:

if True in (t < 0 for t in x):
 Aran-Fey06 сент. 2018 г., 22:42
Исправление: если вывы собираетесь использоватьTrue in ..., пересмотреть и использоватьany вместо.

Ваш ответ на вопрос