Как найти количество положительных чисел в питоне

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 :

  1. Initialize a list of numbers called list1 with integer values.
  2. Initialize two variables pos_count and neg_count to 0.
  3. Convert all the numbers in list1 to strings using the map() function and store them in a new list called list2.
  4. Iterate through each number num in list2 using a for loop.
  5. 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.
  6. 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.

Last Updated :
10 Apr, 2023

Like Article

Save Article

Дан массив действительных чисел из N членов подсчитать сколько в нем отрицательных, положительных и нулевых элементов

задан 27 мар 2020 в 10:50

ToffIx's user avatar

1

Вот так можно:

my_list = [1, 2, 3, 4, 5, 0, 0, 0, 0, -1, -2, -3, -4, -5]

positive = 0
negative = 0
zero = 0

for num in my_list:
    if num > 0:
        positive += 1
        continue
    if num < 0:
        negative += 1
        continue
    zero += 1

print('Положительных: ', positive)
print('Отрицательных: ', negative)
print('Нулей: ', zero)

ответ дан 27 мар 2020 в 11:47

n1tr0xs's user avatar

n1tr0xsn1tr0xs

11.2k2 золотых знака9 серебряных знаков28 бронзовых знаков

massive = [1,2,3,4,5,0,5,4,0,-5,3,2,-1] #вместо massive подставляете свой массив 

pos = []
neg = []
zero = []

for num in massive:
    if num > 0:
        pos.append(num)
    elif num == 0:
        zero.append(num)
    else:
        neg.append(num)

print("Количество положительных: {}".format(len(pos)))
print("Количество отрицательных: {}".format(len(neg)))
print("Количество нулей: {}".format(len(zero)))

ответ дан 27 мар 2020 в 11:14

Alioshca Z's user avatar

Alioshca ZAlioshca Z

1,3731 золотой знак4 серебряных знака10 бронзовых знаков

5

Python задача. Найдите количество положительных, отрицательных и равных нулю элементов массива

Python задачи

Создайте массив из 20 случайных целых чисел от -10 до 10, запишите их в ячейки массива. Подсчитайте, сколько из них положительных, отрицательных и нулевых. Отобразите элементы массива и значения подсчитанных величин. Разбор задачи на python

Алгоритм решения задачи на python

1) Назначить три переменные под счётчики и присвоить им значение равное 0

2) Написать цикл for, который создаёт случайные числа и записывает их в массив, далее сравнивает и записывает +1 в соответствующий счётчик

3) Вывод на экран значения счётчиков и массива

Код для нахождения количества положительных, отрицательных и равных нулю элементов массива

Код для нахождения количества положительных, отрицательных и равных нулю элементов массива

from random import random
mins = 0
zero = 0
plus = 0
a = []
for i in range(20):
n = int(random() * 20) – 10
a.append(n)
print(n, end=’ ‘)
if n > 0:
plus += 1
elif n < 0:
mins += 1
else:
zero += 1

print(“nПоложительных чисел: “, plus)
print(“Отрицательных чисел: “, mins)
print(“Чисел равных нулю: “, zero)

Python задачи
Все задачи на python

Репост статьи

22 декабря 2022 г.

Комментарии могут оставлять только зарегестрированные пользователи!



Комментарии

Ваш комментарий будет первым !

Напиши программу, которая принимает натуральное число n, а затем n чисел от 1 до 100. выведи максимальное из них, которое заканчивается на 1. если такого числа нет, напечатай «нет».

Pascal задача.Даны натуральные числа n, m. Получите сумму m последних цифр числа n.

Большинство программ работает не с отдельными переменными, а с набором переменных.
Например, программа может обрабатывать информацию об учащихся класса, считывая список
учащихся с клавиатуры или из файла, при этом изменение количества учащихся в классе
не должно требовать модификации исходного кода программы.

Раньше мы сталкивались с задачей обработки элементов последовательности,
например, вычисляя наибольший элемент последовательности. Но при этом
мы не сохраняли всю последовательность в памяти компьютера, однако,
во многих задачах нужно именно сохранять всю последовательность, например,
если бы нам требовалось вывести все элементы последовательности
в возрастающем порядке (“отсортировать последовательность”).

Для хранения таких данных можно использовать структуру данных,
называемую в Питоне список (в большинстве же языков
программирования используется другой термин “массив”).
Список представляет собой последовательность элементов, пронумерованных
от 0, как символы в строке. Список можно задать перечислением элементов
списка в квадратных скобках, например, список можно задать так:

Primes = [2, 3, 5, 7, 11, 13]
Rainbow = ['Red', 'Orange', 'Yellow', 'Green', 'Blue', 'Indigo', 'Violet']

В списке Primes — 6 элементов, а именно,
Primes[0] == 2,
Primes[1] == 3,
Primes[2] == 5,
Primes[3] == 7,
Primes[4] == 11,
Primes[5] == 13.
Список Rainbow состоит из 7 элементов, каждый из которых
является строкой.

Также как и символы строки, элементы списка можно индексировать отрицательными
числами с конца, например,
Primes[-1] == 13,
Primes[-6] == 2.

Длину списка, то есть количество элементов в нем, можно узнать при помощи функции
len, например, len(A) == 6.

Рассмотрим несколько способов создания и считывания списков. Прежде всего можно создать
пустой список (не содержащий элементов, длины 0), в конец списка можно добавлять элементы
при помощи метода append. Например, если программа получает на вход
количество элементов в списке n, а потом n элементов
списка по одному в отдельной строке, то организовать считывание списка можно так:

A = []
for i in range(int(input()):
    A.append(int(input())

В этом примере создается пустой список, далее считывается количество элементов
в списке, затем по одному считываются элементы списка и добавляются в его конец.

Для списков целиком определены следующие операции: конкатенация списков
(добавление одного списка в конец другого) и повторение списков (умножение списка
на число). Например:

A = [1, 2, 3]
B = [4, 5]
C = A + B
D = B * 3

В результате список C будет равен [1, 2, 3, 4, 5], а список
D будет равен [4, 5, 4, 5, 4, 5]. Это позволяет по-другому
организовать процесс считывания списков: сначала считать размер списка и создать список
из нужного числа элементов, затем организовать цикл по переменной i начиная
с числа 0 и внутри цикла считывается i-й элемент списка:

A = [0] * int(input())
for i in range(len(A)):
    A[i] = int(input())

Вывести элементы списка A можно одной инструкцией print(A),
при этом будут выведены квадратные скобки вокруг элементов списка и запятые между
элементами списка. Такой вывод неудобен, чаще требуется просто вывести все элементы
списка в одну строку или по одному элементу в строке. Приведем два примера, также
отличающиеся организацией цикла:

for i in range(len(A)):
    print(A[i])

Здесь в цикле меняется индекс элемента i, затем выводится элемент
списка с индексом i.

for elem in A:
    print(elem, end = ' ')

В этом примере элементы списка выводятся в одну строку, разделенные пробелом,
при этом в цикле меняется не индекс элемента списка, а само значение переменной
(например, в цикле for elem in ['red', 'green', 'blue'] переменная
elem будет последовательно принимать значения 'red',
'green', 'blue'.

Методы split и join

Элементы списка могут вводиться по одному в строке, в этом случае строку можно
считать функцией input(). После этого можно использовать метод строки
split, возвращающий список строк, разрезав исходную строку
на части по пробелам. Пример:

A = input().split()

Если при запуске этой программы ввести строку 1 2 3, то список
A будет равен ['1', '2', '3']. Обратите внимание, что
список будет состоять из строк, а не из чисел. Если хочется получить список
именно из чисел, то можно затем элементы списка по одному преобразовать в числа:

for i in range(len(A)):
    A[i] = int(A[i])

Используя функции языка map и list
то же самое можно сделать в одну строку:

A = list(map(int, input().split()))

Объяснений, как работает этот код, пока не будет.
Если нужно считать список действительных чисел, то нужно заменить тип
int на тип float.

У метода split есть необязательный параметр, который
определяет, какая строка будет использоваться в качестве разделителя
между элементами списка. Например, метод split('.')
вернет список, полученный разрезанием исходной строки по символам
'.'.

Используя “обратные” методы можно вывести список
при помощи однострочной команды. Для этого используется метод строки
join. У этого метода один параметр: список строк. В результате
получается строка, полученная соединением элементов списка (которые переданы
в качестве параметра) в одну строку, при этом между элементами списка вставляется
разделитель, равный той строке, к которой применяется метод. Например программа

A = ['red', 'green', 'blue']
print(' '.join(A))
print(''.join(A))
print('***'.join(A))

выведет строки 'red green blue', redgreenblue
и red***green***blue.

Если же список состоит из чисел, то придется использовать еще и функцию
map. То есть вывести элементы списка чисел, разделяя их пробелами,
можно так:

print(' '.join(map(str, A)))

Генераторы списков

Для создания списка, заполненного одинаковыми элементами, можно использовать
оператор повторения списка, например:

A = [0] * n

Для создания списков, заполненных по более сложным формулам можно использовать
генераторы: выражения, позволяющие заполнить список некоторой формулой.
Общий вид генератора следующий:

[ выражение for переменная in список]

где переменная — идентификатор некоторой
переменной, список — список значений,
который принимает данная переменная (как правило, полученный при помощи функции range),
выражение — некоторое выражение, которым будут заполнены
элементы списка, как правило, зависящее от использованной в генераторе переменной.

Вот несколько примеров использования генераторов.

Создать список, состоящий из n нулей можно и при помощи генератора:

A = [ 0 for i in range(n)]

Создать список, заполненный квадратами целых чисел можно так:

A = [ i ** 2 for i in range(n)]

Если нужно заполнить список квадратами чисел от 1 до n,
то можно изменить параметры функции range на
range(1, n + 1):

A = [ i ** 2 for i in range(1, n + 1)]

Вот так можно получить список, заполненный случайными
числами от 1 до 9 (используя функцию randint
из модуля random):

A = [ randint(1, 9) for i in range(n)]

А в этом примере список будет состоять из строк, считанных
со стандартного ввода: сначала нужно ввести число элементов
списка (это значение будет использовано в качестве аргумента
функции range), потом — заданное количество строк:

A = [ input() for i in range(int(input()))]

Упражнения

Во всех задачах этого листка программа получает на вход
строку из целых чисел, разделенных пробелами. В конце строки
также могут быть пробелы. Данную строку необходимо считать
в список целых чисел.

01: Четные индексы

Выведите все элементы списка с четными индексами
(то есть A[0], A[2], A[4], …).

Программа должна быть эффективной и не выполнять лишних действий!

Ввод Вывод
1 2 3 4 5
1 3 5

02: Четные элементы

Выведите все четные элементы списка.

Ввод Вывод
1 2 2 3 3 3 4
2 2 4

03: Количество положительных

Найдите количество положительных элементов в данном списке.

Ввод Вывод
1 -2 3 -4 5
3

04: Больше предыдущего

Дан список чисел. Выведите все элементы списка, которые больше предыдущего элемента.

Ввод Вывод
1 5 2 4 3
5 4

05: Соседи одного знака

Дан список чисел. Если в нем есть два соседних элемента одного знака, выведите эти числа.
Если соседних элементов одного знака нет – не выводите ничего. Если таких пар соседей
несколько – выведите первую пару.

Ввод Вывод
-1 2 3 -1 -2
2 3

06: Больше своих соседей

Дан список чисел. Определите, сколько в этом списке элементов, которые
больше двух своих соседей и выведите количество таких элементов.

Ввод Вывод
1 0 1 0 1
1

07: Наибольший элемент

Дан список чисел. Выведите значение наибольшего элемента в списке, а затем
индекс этого элемента в списке. Если наибольших элементов несколько,
выведите индекс первого из них.

Ввод Вывод
1 2 3 2 1
3 2

08: Наименьший положительный

Выведите значение наименьшего из всех положительных элементов в списке.
Известно, что в списке есть хотя бы один положительный элемент, а значения
всех элементов списка по модулю не превосходят 1000.

Ввод Вывод
5 -4 3 -2 1
1

09: Наименьший нечетный

Выведите значение наименьшего нечетного элемента списка, а если в списке
нет нечетных элементов – выведите число 0.

Ввод Вывод
0 1 2 3 4
1
2 4 6 8 10
0

10: Ближайшее число

Дан список чисел и некоторое число. Найдите в данном списке элемент, ближайший к заданному.

В первой строке заданы элементы списка (целые числа, не превосходящие по модулю 1000).

Во второй строке дано одно целое число (x), не превосходящее по модулю 1000.

Выведите значение элемента списка, ближайшее к (x). Если таких чисел несколько, выведите любое из них.

Ввод Вывод
1 2 4 5 6
3
2
1 2 4 5 6
3
4
1 2 3
2
2

11: Шеренга

Петя перешёл в другую школу. На уроке физкультуры ему понадобилось определить своё место в строю.
Помогите ему это сделать.

Программа получает на вход невозрастающую последовательность натуральных чисел,
означающих рост каждого человека в строю. После этого вводится число X – рост Пети.
Все числа во входных данных натуральные и не превышают 200.

Выведите номер, под которым Петя должен встать в строй. Если в строю есть люди с одинаковым ростом,
таким же, как у Пети, то он должен встать после них.

Ввод Вывод
165 163 160 160 157 157 155 154
162
3
165 163 160 160 157 157 155 154
160
5

12: Количество различных элементов

Дан список, упорядоченный по неубыванию элементов в нем.
Определите, сколько в нем различных элементов.

Ввод Вывод
1 2 2 3 3 3
3

13: Вывести в обратном порядке

Выведите элементы данного списка в обратном порядке, не
изменяя сам список.

Ввод Вывод
1 2 3 4 5
5 4 3 2 1

14: Переставить в обратном порядке

Переставьте элементы данного списка в обратном порядке, затем выведите
элементы полученного списка.

Эта задача отличается от предыдущей тем, что вам нужно изменить значения
элементов самого списка, поменяв местами A[0] c A[n-1],
A[1] с A[n-2], а затем вывести элементы списка подряд.

Ввод Вывод
1 2 3 4 5
5 4 3 2 1

15: Переставить соседние

Переставьте соседние элементы списка (A[0] c A[1],
A[2] c A[3] и т.д.).
Если элементов нечетное число, то последний элемент остается на своем месте.

Ввод Вывод
1 2 3 4 5
2 1 4 3 5

16: Переставить min и max

В списке все элементы различны. Поменяйте местами минимальный и максимальный элемент этого списка.

Ввод Вывод
3 4 5 2 1
3 4 1 2 5

17: Циклический сдвиг вправо

Циклически сдвиньте элементы списка вправо
(A[0] переходит на место A[1],
A[1] на место A[2], …,
последний элемент переходит на место A[0]).

Используйте минимально возможное количество операций присваивания.

Ввод Вывод
1 2 3 4 5
5 1 2 3 4

18: Кузнечики

(N) кузнечиков стоят в ряд. Для каждого кузнечика задана числовая характеристика — длина его прыжка.
Если длина прыжка кузнечика равна (l), то он за один прыжок перепрыгивает через (l) других кузнечиков.

Каждую секунду последний кузнечик прыгает к началу ряда, перепрыгивает через столько кузнечиков, чему равна
длина его прыжка, и становится между двумя другими кузнечиками.

П первой строка входных данных задана расстановка кузнечиков (длины их прыжков). Во второй строке входных данных
задано число секунд (t). Опеределите и выведите на экран расстановку кузнечиков через (t) секунд. Все длины прыжков —
натуральные числа, меньшие, чем число кузнечиков в ряду.

Ввод Вывод
1 2 3 4 2
2
4 1 2 2 3

19: Количество совпадающих пар

Дан список чисел. Посчитайте, сколько в нем пар элементов, равных друг другу.
Считается, что любые два элемента, равные друг другу образуют одну пару,
которую необходимо посчитать.

Ввод Вывод
1 2 3 2 3
2
1 1 1 1 1
10

20: Два ближайших

Дан список целых чисел. Найдите в нем два ближайших элемента (то есть два элемента с минимальной
абсолютной разностью).

Программа получает на вход число (N), в следующей строке заданы (N) элементов
списка через пробел.

Выведите два числа: индексы двух элементов массива, абсолютная величина разности которых минимальна.

Ввод Вывод
6
7 0 4 2 5 9
2 4

21: Количество различных элементов – 2

Дан список. Посчитайте, сколько в нем различных элементов, не изменяя самого списка.

Ввод Вывод
3 2 1 2 3
3

22: Медиана

В списке — нечетное число элементов, при этом все элементы различны. Найдите
медиану списка: элемент, который стоял бы ровно посередине списка, если список отсортировать.

При решении этой задачи нельзя модифицировать данный список (в том числе и сортировать его),
использовать вспомогательные списки.

Программа получает на вход нечетное число (N), в следующей строке заданы (N) элементов
списка через пробел.

Программа должна вывести единственное число — значение медианного элемента в списке.

Ввод Вывод
7
6 1 9 2 3 4 8
4

23: Уникальные элементы

Дан список. Выведите те его элементы, которые встречаются в списке только один раз.
Элементы нужно выводить в том порядке, в котором они встречаются в списке.

Ввод Вывод
1 2 2 3 3 3
1

24: Самое частое число

Дан список. Не изменяя его и не используя дополнительные списки,
определите, какое число в этом списке встречается чаще всего.

Если таких чисел несколько, выведите любое из них.

Ввод Вывод
1 2 3 2 3 3
3

25: Числа (k)-боначчи

Назовем последовательность чисел последовательностью (k)-боначчи, если
каждый элемент этой последовательности является суммой (k) предыдущих
членов последовательности. В частности, последовательность (2)-боначчи
является последовательностью Фибоначчи.

Более формально, (i-й) элемент последовательности (k_i) равен
1, если (0le ile k – 1) и равен сумме (k) предыдущих членов последовательности
(k_{i-1} + k_{i-2} + … + k_{i-k}) при (ige k).

Даны два числа (k) и (n) ((kge 2), (nge0)). Вычислите
(n)-й член последовательности (k)-боначчи
(k_n).

Ввод Вывод
3 6
17
100 0
1

26: Ферзи

Известно, что на доске 8×8 можно расставить 8 ферзей так, чтобы они не били
друг друга. Вам дана расстановка 8 ферзей на доске, определите, есть ли среди них
пара бьющих друг друга.

Программа получает на вход восемь пар чисел, каждое число от 1 до 8 – координаты 8 ферзей.
Если ферзи не бьют друг друга, выведите слово NO, иначе выведите YES.

Ввод Вывод
1 7
2 4
3 2
4 8
5 6
6 1
7 3
8 5
NO
1 8
2 7
3 6
4 5
5 4
6 3
7 2
8 1
YES

Голосование за лучший ответ

Бабичев Рама

Мастер

(1082)


5 лет назад

допустим, что:
a = 1,2,3,4,5,6,7,8,9
тогда список положительных чисел:
[x for x in a if x%2==0]

Юрий Моисеев

Оракул

(83756)


5 лет назад

Если числа из списка А, то например так:
print(len([A[i] for i in range(len(A)) if A[i]>0]))

UltimatuM

Оракул

(72868)


5 лет назад

l = [1,2,3, -4, 5]
print(sum(1 for x in l if x >0))

Добавить комментарий