Python 3 Тестирование ряда элементов в списке - PullRequest
2 голосов
/ 05 января 2012

У меня есть список или массив, который называется инвентаризацией [], и в каждый момент времени он может содержать не более пятнадцати записей.Мне нужно проверить, если любая из этих записей равна нулю, и если какая-либо одна запись равна нулю, сделать что-то.Какой эффективный способ сделать это, не делая

if inventory[0] == 0 or inventory[1] == 0 or inventory[2] == 0...

и т. Д.?

Ответы [ 4 ]

5 голосов
/ 05 января 2012

Для вашего простого случая, я думаю, вы могли бы просто сделать это:

if 0 in inventory:
  # do something

В более общем случае для этого типа вещей вы можете использовать функцию any ( docs ).

if any([item == 0 for item in inventory]):
  # do something
2 голосов
/ 05 января 2012

Встроенная в Python функция any() идеально подходит для этого. Он принимает в качестве аргумента итерацию и возвращает True, если какой-либо из элементов имеет значение true (не ложь).

if any(item == 0 for item in inventory):
    # do something

Существует также аналогичная функция с именем all(), которая возвращает True, если все элементы имеют значение True.

0 голосов
/ 05 января 2012

Попробуйте это:

inventory=[1,2,3,4,0]
if 0 in inventory:
 print "There is 0 in the list"

Выход: В списке есть 0

0 голосов
/ 05 января 2012

Используйте функцию all и тот факт, что 0 оценивается как False:

if not all(inventory):
    ...

Редактировать: предполагая, что inventory содержит только цифры, конечно,

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