Не могу вывести номер первого столбца матрицы, состоящего из отрицательных элементов
Пытаюсь вывеси номер первого столбца состоящего из отрицательных элементов,но выводится номер первого отрицательного элемента, не могу понять как решить проблему
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
→ Ссылка
алгоритм должен быть такой:
пройти по всем столбцам матрицы
проверить каждый столбец на наличие отрицательных элементов (точнее - проверить на наличие неотрицательных элементов - если найдены - столбец отвергается и анализируется следующий столбец)
при нахождении столбца - выдать его номер
т.е. по хорошему код должен быть таким:
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