Python | Integer count in Mixed List (original) (raw)

Last Updated : 11 May, 2023

The lists in python can handle different type of data types in it. The manipulation of such lists is complicated. Sometimes we have a problem in which we need to find the count of integer values in which the list can contain string as a data type i.e heterogeneous. Let’s discuss certain ways in which this can be performed.
Method #1 : Using list comprehension + len() + isinstance()
This particular problem can be solved by filtering our search of len using the isinstance method, we can filter out the integer value and then can use len function to get required length value.

Python3

test_list = [ 3 , 'computer' , 5 , 'geeks' , 6 , 7 ]

print ( "The original list is : " + str (test_list))

res = len ( list (i for i in test_list if isinstance (i, int )))

print ( "The length of integers in list is : " + str (res))

Output

The original list is : [3, 'computer', 5, 'geeks', 6, 7] The length of integers in list is : 4

The time complexity of the above program is O(n), where n is the length of the input list.

The space complexity of the program is O(1), which is constant. This is because only a few variables are used to store the input list.

Method #2 : Using lambda + map() + len() + isinstance()
The above problem can also be solved using the lambda function as a map() in the len() along with the isinstance method which performs the task of checking for integer values.

Python3

test_list = [ 3 , 'computer' , 5 , 'geeks' , 6 , 7 ]

print ( "The original list is : " + str (test_list))

temp = list ( map ( lambda i: isinstance (i, int ), test_list))

res = len ([ele for ele in temp if ele])

print ( "The length of integers in list is : " + str (res))

Output

The original list is : [3, 'computer', 5, 'geeks', 6, 7] The length of integers in list is : 4

Time Complexity: O(n), where n is the length of the list test_list
Auxiliary Space: O(1) additional space is not needed

Method #3 : Using type() and len() methods

The above problem can be solved by using type() to check if the type of the element as int, then append that item in a new list and print the size of the new list.

Python3

test_list = [ 3 , 'computer' , 5 , 'geeks' , 6 , 7 ]

print ( "The original list is : " + str (test_list))

res = []

for i in test_list:

`` if ( type (i) is int ):

`` res.append(i)

x = len (res)

print ( "The length of integers in list is : " + str (x))

Output

The original list is : [3, 'computer', 5, 'geeks', 6, 7] The length of integers in list is : 4

Time Complexity: O(n*n), where n is the number of elements in the list “test_list”.
Auxiliary Space: O(n), where n is the number of elements in the list “test_list”.

Method #4: Using filter() and len() method
This approach is similar to method 1, but instead of using list comprehension, we use filter() function to filter out the integers.

Python3

def is_int(val):

`` return isinstance (val, int )

test_list = [ 3 , 'computer' , 5 , 'geeks' , 6 , 7 ]

print ( "The original list is : " + str (test_list))

res = len ( list ( filter (is_int, test_list)))

print ( "The length of integers in list is : " + str (res))

Output

The original list is : [3, 'computer', 5, 'geeks', 6, 7] The length of integers in list is : 4

Time Complexity: O(n) where n is the number of elements in the list
Auxiliary Space: O(n) where n is the number of integers in the list

Method #4: Using try and except method.
Algorithm:

  1. Initialize a counter variable res to zero.
  2. Loop through each item i in the list test_list.
  3. For each item i, check if its type is int.
  4. If i is of type int, increment the counter variable res.
  5. Finally, print out the value of the counter variable res as the length of integers in the list.

Python3

test_list = [ 3 , 'computer' , 5 , 'geeks' , 6 , 7 ]

try :

`` res = 0

`` for i in test_list:

`` if type (i) = = int :

`` res + = 1

`` print ( "The length of integers in list is : " + str (res))

except Exception as e:

`` print ( "An error occurred: " + str (e))

Output

The length of integers in list is : 4

Time complexity:

The time complexity of this algorithm is O(n), where n is the length of the input list test_list. This is because the algorithm needs to loop through each item in the list once in order to count the number of integers in the list.

Auxiliary Space:

The auxiliary space complexity of this algorithm is O(1) because it only uses a constant amount of additional space to store the counter variable res and the loop variable i. No additional data structures are used to store the input list or the intermediate results, so the space complexity is constant with respect to the input size.

Method #5: Using isdigit()

Approach:

  1. Initialize a variable count to 0.
  2. Loop through the elements in the list using a for loop.
  3. Check if the element is a digit or not using the isdigit() method.
  4. If the element is a digit, increment the count variable by 1.
  5. Return the count variable after the loop ends.

Python3

lst = [ 3 , 'computer' , 5 , 'geeks' , 6 , 7 ]

print ( "The original list is: " ,lst)

count = 0

for elem in lst:

`` if str (elem).isdigit():

`` count + = 1

print ( "The length of integers in list is :" , count)

Output

The original list is: [3, 'computer', 5, 'geeks', 6, 7] The length of integers in list is : 4

Time complexity: O(n), where n is the length of the input list.
Space complexity: O(1)