Open In App

Python Program to test whether the length of rows are in increasing order

Given a Matrix, the following program is used to test if length all rows of a matrix are in increasing order or not. If yes, it returns True, otherwise False.

Input : test_list = [[3], [1, 7], [10, 2, 4], [8, 6, 5, 1, 4]] 
Output : True 
Explanation : 1 < 2 < 3 < 5, increasing lengths of rows, hence True.
Input : test_list = [[3], [1, 7], [10], [8, 6, 5, 1, 4]] 
Output : False 
Explanation : 1 <2 >1 < 5, Non-increasing lengths of rows, hence False.



Method 1: Using loop and len()

In this, we are using loop to check whether the length of next row is greater than the present row, if not, result is flagged off.






# Initializing list
test_list = [[3], [1, 7], [10, 2, 4], [8, 6, 5, 1, 4]]
 
# Printing original list
print("The original list is : " + str(test_list))
 
res = True
for idx in range(len(test_list) - 1) :
     
    # flag off in case next length is not greater
    # than current
    if len(test_list[idx + 1]) <= len(test_list[idx]):
        res = False
        break
 
# Printing result
print("Are rows of increasing lengths ? : " + str(res))

Output:

The original list is : [[3], [1, 7], [10, 2, 4], [8, 6, 5, 1, 4]]

Are rows of increasing lengths ? : True

Time Complexity: O(n)
Auxiliary Space: O(n)

Method 2 : Using all() and list comprehension

In this, we test for next length being greater than the current length using len() and all() is used to check for all the rows.




# initializing list
test_list = [[3], [1, 7], [10, 2, 4], [8, 6, 5, 1, 4]]
 
# printing original list
print("The original list is : " + str(test_list))
 
# checking for truth for all rows in matrix
res = all(len(test_list[idx + 1]) > len(test_list[idx]) for idx in range(len(test_list) - 1))
 
# printing result
print("Are rows of increasing lengths ? : " + str(res))

Output:

The original list is : [[3], [1, 7], [10, 2, 4], [8, 6, 5, 1, 4]]

Are rows of increasing lengths ? : True

Time Complexity: O(n), where n is the length of the input list. This is because we’re using the built-in all() and list comprehension which all has a time complexity of O(n) in the worst case.
Auxiliary Space: O(1), as we’re not using additional space other than the input list itself. 

Method 3: Using len() and sort()

In this we will append length of each row to a new list, later we will check whether the initial list and  list after sorting are same or not.If same the length of rows are in increasing manner




# initializing list
test_list = [[3], [1, 7], [10], [8, 6, 5, 1, 4]]
 
# printing original list
print("The original list is : " + str(test_list))
 
res = False
x=[]
for i in test_list:
    x.append(len(i))
a=x
x=x.sort()
if(a==x):
    res=True
# printing result
print("Are rows of increasing lengths ? : " + str(res))

Output
The original list is : [[3], [1, 7], [10], [8, 6, 5, 1, 4]]
Are rows of increasing lengths ? : False

Method 4: Using map() and sorted() function

  1. Initialize the list lengths with the lengths of each sublist in test_list.
  2. Sort the list lengths in ascending order using the sorted() function.
  3. Compare the sorted list lengths with the original list lengths using the == operator to check if the rows are of increasing lengths.
  4. Return the result as a boolean value.




# initializing list
test_list = [[3], [1, 7], [10], [8, 6, 5, 1, 4]]
 
# printing original list
print("The original list is : " + str(test_list))
 
# Method 4: Using map() and sorted()
lengths = list(map(len, test_list))
res = lengths == sorted(lengths)
 
# printing result
print("Are rows of increasing lengths ? : " + str(res))

Output
The original list is : [[3], [1, 7], [10], [8, 6, 5, 1, 4]]
Are rows of increasing lengths ? : False

Time complexity: O(n log n), where n is the number of sublists in test_list. 
Auxiliary space: O(n), where n is the number of sublists in test_list. 


Article Tags :