Функция Python все не работает, как ожидалось - PullRequest
0 голосов
/ 02 марта 2019

Я пытаюсь использовать функцию all в python для поиска в матрице, но она работает не так, как ожидалось.Я бы предположил, что для matrix будет выводиться True, а для matrix2 будет выводиться False.Чего мне здесь не хватает?

  matrix= [[1,1,1,1,1,1,1,1],
           [1,1,1,1,1,1,1,1],
           [1,1,1,1,1,1,1,1],
            [1,1,1,1,1,1,1,1],
            [1,1,1,1,1,1,1,1],
            [1,1,1,1,1,1,1,1],
                [1,1,1,1,1,1,1,1],
                [1,1,1,1,1,1,1,1]]

matrix2= [[0,0,0,0,0,0,0,0],
   [0,0,0,0,0,0,0,0],
   [0,0,0,0,0,0,0,0],
    [0,0,0,0,0,0,0,0],
    [0,0,0,0,0,0,0,0],
    [0,0,0,0,0,0,0,0],
        [0,0,0,0,0,0,0,0],
        [0,0,0,0,0,0,0,0]]


def isComplete(m):
    return all(item != 0 for item in m)

print isComplete(matrix)
print isComplete(matrix2)

Вывод:

True
True

Ответы [ 3 ]

0 голосов
/ 02 марта 2019

Вы должны использовать здесь вложенный цикл, потому что матрицы содержат списки, а не фактические числа

return all(item != 0 for line in m for item in line)
0 голосов
/ 02 марта 2019

Вам нужно перебирать вложенный список, поэтому вам нужно вложенное понимание.

return all(item != 0 for sublist in m for item in sublist)
0 голосов
/ 02 марта 2019

Просто измените isComplete():

def isComplete(m):
    return all(j != 0 for item in m for j in item)

До того, как ваш код проверял только list(non empty list), поэтому он возвращал True.

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