Выяснить, в какой строке последовательность является возрастающей или убывающей. python
Задача: Дан целочисленный двумерный массив, размерности N х M. Выяснить, в какой строке последовательность является возрастающей или убывающей. Мой код:
import random
N = int(input('Количество строк:'))
M = int(input('Количество столбцов:'))
A = [[0] * M for i in range(N)]
for i in range(N):
for j in range(M):
A[i][j] = random.randint(0, 10)
for i in A:
print(f'{i}', end='')
print()
for i in range(N):
for j in range(M):
if A[i]>A[i+1]:
print ('строка уменьшается')
Не могу понять, как пройтись по каждой строке и определить там, где убывает, а где возрастает. Пытался как-то пройтись по массиву, но ничего не вышло толкового.
Ответы (2 шт):
Строка убывает, если каждый элемент меньше предыдущего.
Строка возрастает, если каждый элемент больше предыдущего.
Поэтому нужно не просто проверять два соседних элемента, как в вашем коде, а еще и "держать в памяти" предыдущее состояние. Ведь если каждый элемент меньше предыдущего, но самый последний вдруг больше предпоследнего, то строка уже не является убывающей.
можете сделать так, хотя, с точки зрения эффективности, это не лучший вариант:
from random import choices
n = 5 #int(input('Количество строк:'))
m = 5 #int(input('Количество столбцов:'))
a = [choices(range(10), k=m) for i in range(n)]
for i in a:
if all(x>=y for x,y in zip(i,i[1:])):
print('строка убывает')
elif all(x<=y for x,y in zip(i,i[1:])):
print('строка возрастает')
else:
print('строка не упорядочена')