2016-02-09 3 views
-3

Я хочу, чтобы моя программа, чтобы проверить мое двухмерная список полон 0как проверить, если все значения списка питона являются 0

usedGameboardPosition = [[0 for x in range(16)] for x in range(16)] 

это заявление, которое я позже в программе заправить 1

я попытался проверить его с этим:

if all(v == 0 for v in usedGameboardPosition): 
    start = 0 

, но это, кажется, не работает. Хотя список заполнен 0, он не переходит в состояние

EDIT: Хорошо, похоже, я нашел ответ, спасибо, ребята!

if all(v == [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] for v in usedGameboardPosition): 
     start = 0 
+0

, потому что '' V' в usedGameboardPosition' список, а не количество. –

ответ

0

Вы не можете проверить, если v == 0, так как V список 0. Попробуйте вместо этого:

x = [[0 for x in range(16)] for x in range(16)] 

print all(all(y == 0 for y in z) for z in x) 
+0

Решение @chads на самом деле приятнее :) – olofom

0

Вы должны петли через внутренние списки, а также:

usedGameboardPosition = [[0 for x in range(16)] for x in range(16)] 

if all(all(x == 0 for x in v) for v in usedGameboardPosition): 
    print "All zeroes!" 

test the above with different values on ideone.

3

Каждый v в usedGameboardPosition - это список 0s. Для этой работы необходимо проверить все v с в этом списке

if all(v == 0 for l in usedGameboardPosition for v in l): 
    start = 0 
0

Если ваша настольная игра содержит только положительные (или только отрицательные) числовые значения в дополнение к нулю, вы можете использовать sum().

if not sum(sum(row) for row in usedGameboardPosition): 
    # it added up to zero, so it was all zeroes 
0

Перевернутый логика иногда выигрывает день:

if all(not any(row) for row in usedGameboardPosition): 
    start = 0 
Смежные вопросы