Python program to count positive and negative numbers in a list
Last Updated :
10 Apr, 2023
Given a list of numbers, write a Python program to count positive and negative numbers in a List.
Example:
Input: list1 = [2, -7, 5, -64, -14]
Output: pos = 2, neg = 3
Input: list2 = [-12, 14, 95, 3]
Output: pos = 3, neg = 1
Example #1: Count positive and negative numbers from the given list using for loop Iterate each element in the list using for loop and check if num >= 0, the condition to check positive numbers. If the condition satisfies, then increase pos_count else increase neg_count.
Python3
list1 = [ 10 , - 21 , 4 , - 45 , 66 , - 93 , 1 ]
pos_count, neg_count = 0 , 0
for num in list1:
if num > = 0 :
pos_count + = 1
else :
neg_count + = 1
print ( "Positive numbers in the list: " , pos_count)
print ( "Negative numbers in the list: " , neg_count)
|
Output
Positive numbers in the list: 4
Negative numbers in the list: 3
Time Complexity: O(N), Here N is the number of items in the list.
Auxiliary Space: O(1), As constant extra space is used.
Example #2: Using while loop
Python3
list1 = [ - 10 , - 21 , - 4 , - 45 , - 66 , 93 , 11 ]
pos_count, neg_count = 0 , 0
num = 0
while (num < len (list1)):
if list1[num] > = 0 :
pos_count + = 1
else :
neg_count + = 1
num + = 1
print ( "Positive numbers in the list: " , pos_count)
print ( "Negative numbers in the list: " , neg_count)
|
Output
Positive numbers in the list: 2
Negative numbers in the list: 5
Time Complexity: O(N), Here N is the number of items in the list.
Auxiliary Space: O(1), As constant extra space is used.
Example #3: Using Python Lambda Expressions
Python3
list1 = [ 10 , - 21 , - 4 , 45 , 66 , 93 , - 11 ]
neg_count = len ( list ( filter ( lambda x: (x < 0 ), list1)))
pos_count = len ( list ( filter ( lambda x: (x > = 0 ), list1)))
print ( "Positive numbers in the list: " , pos_count)
print ( "Negative numbers in the list: " , neg_count)
|
Output
Positive numbers in the list: 4
Negative numbers in the list: 3
Time Complexity: O(N), Here N is the number of items in the list.
Auxiliary Space: O(1), As constant extra space is used.
Example #4: Using List Comprehension
Python3
list1 = [ - 10 , - 21 , - 4 , - 45 , - 66 , - 93 , 11 ]
only_pos = [num for num in list1 if num > = 1 ]
pos_count = len (only_pos)
print ( "Positive numbers in the list: " , pos_count)
print ( "Negative numbers in the list: " , len (list1) - pos_count)
|
Output
Positive numbers in the list: 1
Negative numbers in the list: 6
Time Complexity: O(N), Here N is the number of items in the list.
Auxiliary Space: O(1), As constant extra space is used.
Method: Using enumerate function
Python3
l = [ 12 , - 7 , 5 , 64 , - 14 ];c = 0
x = [a for j,a in enumerate (l) if a> = 0 ]
print ( "Length of Positive numbers is:" , len (x))
print ( "Length of Negative numbers is:" , len (l) - len (x))
|
Output
Length of Positive numbers is: 3
Length of Negative numbers is: 2
Time Complexity: O(N), Here N is the number of items in the list.
Auxiliary Space: O(1), As constant extra space is used.
Method : Using startswith() method
Python3
list1 = [ 10 , - 21 , 4 , - 45 , 66 , - 93 , 1 , 0 ]
pos_count, neg_count = 0 , 0
list2 = list ( map ( str ,list1))
for num in list2:
if num.startswith( "-" ):
neg_count + = 1
elif (num! = "0" ):
if ( not num.startswith( "-" )):
pos_count + = 1
print ( "Positive numbers in the list: " , pos_count)
print ( "Negative numbers in the list: " , neg_count)
|
Output
Positive numbers in the list: 4
Negative numbers in the list: 3
Time Complexity: O(N), Here N is the number of items in the list.
Auxiliary Space: O(1), As constant extra space is used.
Method: Using sum() method
Python3
l = [ 12 , - 7 , 5 , 64 , - 14 ];
x = sum ( 1 for i in l if i > = 0 )
print ( "Length of Positive numbers is:" , x)
print ( "Length of Negative numbers is:" , len (l) - x)
|
Output
Length of Positive numbers is: 3
Length of Negative numbers is: 2
Time Complexity: O(N), Here N is the number of items in the list.
Auxiliary Space: O(1), As constant extra space is used.
Method : Using for loop
STEP BY STEP APPROACH :
- Initialize a list of numbers called list1 with integer values.
- Initialize two variables pos_count and neg_count to 0.
- Convert all the numbers in list1 to strings using the map() function and store them in a new list called list2.
- Iterate through each number num in list2 using a for loop.
- For each number num, check the first character of the string representation of the number using num[0]:
a. If the first character is “-“, increment the neg_count variable as the number is negative.
b. Else, check if the number is not equal to “0” using num!=”0″:
i. If the number is positive, increment the pos_count variable.
- Print the final values of pos_count and neg_count using the print() function.
Python3
list1 = [ 10 , - 21 , 4 , - 45 , 66 , - 93 , 1 , 0 ]
pos_count, neg_count = 0 , 0
list2 = list ( map ( str ,list1))
for num in list2:
if num[ 0 ] = = "-" :
neg_count + = 1
elif (num! = "0" ):
if ( not num[ 0 ] = = "-" ):
pos_count + = 1
print ( "Positive numbers in the list: " , pos_count)
print ( "Negative numbers in the list: " , neg_count)
|
Output
Positive numbers in the list: 4
Negative numbers in the list: 3
Time Complexity: O(N)
Auxiliary Space: O(N)
Method: Using the collections module and the Counter() function:
- Importing the Counter class from the collections module.
- Using a list comprehension to get a list of boolean values to check whether each number is non-negative or not, based on whether it is greater than or equal to zero.
- Passing the list of booleans to the Counter to get a dictionary mapping for counts.
- Storing the count of positive and negative no.
- Printing the output.
Python3
from collections import Counter
list1 = [ 10 , - 21 , 4 , - 45 , 66 , - 93 , 1 , 0 ]
counts = Counter(num > 0 for num in list1)
pos_count = counts[ True ]
neg_count = counts[ False ] - ( 0 in list1)
print ( "Positive numbers in the list: " , pos_count)
print ( "Negative numbers in the list: " , neg_count)
|
Output
Positive numbers in the list: 4
Negative numbers in the list: 3
Time Complexity: O(N) as we are traversing the whole list which takes O(N) time complexity.
Auxiliary Space: O(1) as no extra memory is used.
Please Login to comment...