2012-01-05 3 views
2

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

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

и т. Д.?

+0

«тест, если какой-либо из этих записей равно нулю, и если какой-либо один вход равен нуль, сделай что-нибудь ». вызывает смущение. В чем разница между «любой из этих записей» и «любой одной записью»? Сделайте что-то - что-то вообще, или что-то в частности с одной/некоторыми/всеми нулевыми записями, для которых вам нужно будет знать позицию (индекс) нулевой записи в списке? –

ответ

2

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

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

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

0
использование

Make функции all, а также тот факт, что 0 оценивает, как False:

if not all(inventory): 
    ... 

Edit: если предположить, что inventory содержит только цифры, конечно

+0

Хрупкий, может сломаться, например, с помощью 'inventory = ['spam', [], 'eggs']' – wim

+0

@wim: конечно; Я предполагаю, что 'inventory' - это список целых чисел (и именно поэтому там 0) –

+0

Лучше не делать таких предположений, если они не нужны или, по крайней мере, упоминать предположения в вашем ответе. – wim

5

Для вашего простого случая, я думаю, что вы возможно, просто сделают это:

if 0 in inventory: 
    # do something 

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

if any([item == 0 for item in inventory]): 
    # do something 
+1

+1 для 'if 0 in inventory'. Иногда забывают о простых вещах :) –

0

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

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

выход: Существует 0 в списке

Смежные вопросы