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:
- Initialize a counter variable res to zero.
- Loop through each item i in the list test_list.
- For each item i, check if its type is int.
- If i is of type int, increment the counter variable res.
- 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:
- Initialize a variable count to 0.
- Loop through the elements in the list using a for loop.
- Check if the element is a digit or not using the isdigit() method.
- If the element is a digit, increment the count variable by 1.
- 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)