Не могу вывести номер первого столбца матрицы, состоящего из отрицательных элементов

Пытаюсь вывеси номер первого столбца состоящего из отрицательных элементов,но выводится номер первого отрицательного элемента, не могу понять как решить проблему

Idx = -1

j = 0
for j in range(n):
    i=0
    while (i<n) and (Idx == -1):
        if A[i][j] < 0:
            Idx = i
        i=i+1
return Idx

Ответы (1 шт):

Автор решения: Zhihar

алгоритм должен быть такой:

  1. пройти по всем столбцам матрицы

  2. проверить каждый столбец на наличие отрицательных элементов (точнее - проверить на наличие неотрицательных элементов - если найдены - столбец отвергается и анализируется следующий столбец)

  3. при нахождении столбца - выдать его номер

т.е. по хорошему код должен быть таким:

def find(matrix, cols, rows):
    for col in range(cols):
        is_success = True
        for row in range(rows):
            if matrix[row][col] >= 0:
                is_success = False
                break
        if is_success:
            return col
    return -1

можно чуть покороче, но и менее производительнее:

def find(matrix, cols, rows):
    for col in range(cols):
        if [row for row in range(rows) if matrix[row][col] >= 0] == []:
            return col
    return -1

или так, что красивее :)

def find(matrix, cols, rows):
    for col in range(cols):
        if any(True for row in range(rows) if matrix[row][col] >= 0):
            return col
    return -1

или так:

if all(matrix[row][col] < 0 for row in range(rows)):
    return col
→ Ссылка