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

Given a list of list, the task is to get only positive element from given list. Below are some ways to solve the above problem. 

Method #1: Using Iteration 

Python3

Input = [[10, -11, 222], [42, -222, -412, 99, -87]]

Output = []

for elem in Input:

    temp = []

    for x in elem:

        if x>0:

            temp.append(x)

    Output.append(temp)

print("Initial List is :", Input)

print("Modified list is :", Output)

Output:

Initial List is : [[10, -11, 222], [42, -222, -412, 99, -87]]
Modified list is : [[10, 222], [42, 99]]

Time complexity: O(n*m), where n is length of Input list and m is length of sub lists in Input list.

Auxiliary Space: O(k), where k is length of Output list.

  Method #2: Using map and list Comprehension 

Python3

Input = [[10, -11, 222], [42, -222, -412, 99, -87]]

temp = map(lambda elem: filter(lambda a: a>0, elem), Input)

Output = [[a for a in elem if a>0] for elem in temp]

print("Initial List is :", Input)

print("Modified list is :", Output)

Output:

Initial List is : [[10, -11, 222], [42, -222, -412, 99, -87]]
Modified list is : [[10, 222], [42, 99]]

Time complexity: O(n*n), where n is the length of the test_list. The  map and list Comprehension takes O(n*n) time
Auxiliary Space: O(n), where n is the number of elements in the input list 

  Method #3: Using List Comprehension 

Python3

Input = [[10, -11, 222], [42, -222, -412, 99, -87]]

Output = [ [b for b in a if b>0] for a in Input]

print("Initial List is :", Input)

print("Modified list is :", Output)

Output:

Initial List is : [[10, -11, 222], [42, -222, -412, 99, -87]]
Modified list is : [[10, 222], [42, 99]]

Method #4: Using map, lambda, filter  Here is an example of how you can use the map() function, the filter() function, and a lambda function to extract the positive elements from each sublist in a list of lists:

The code first initializes a list test_list with two sublists, each containing a mix of positive and negative integers. Then, it uses the map() function, the filter() function, and a lambda function to extract the positive elements from each sublist.

The map() function applies the lambda function to each element in the list test_list, which is a sublist in this case. The lambda function, in turn, uses the filter() function to filter out all the elements in the sublist that are not greater than 0. This results in a list of sublists, where each sublist contains only the positive elements from the corresponding sublist in the original list. Finally, the list() function is used to convert the map object returned by map() into a list, which is stored in the variable result.

Python3

test_list = [[10, -11, 222], [42, -222, -412, 99, -87]]

result = list(map(lambda x: list(filter(lambda y: y > 0, x)), test_list))

print("The list after filtering positive elements : " + str(result))

Output

The list after filtering positive elements : [[10, 222], [42, 99]]

This approach has a time complexity of O(nm), where n is the number of sublists in the list and m is the number of elements in each sublist, because it requires one iteration over each element in each sublist. The space complexity is also O(nm), because a new list with size equal to the number of elements in the original list is created.

Method #5: Using Regular Expressions

In this approach, we use regular expressions to match positive integers in each sublist. The regular expression pattern bd+b matches one or more digits (d+) surrounded by word boundaries (b). This ensures that only whole numbers are matched, and not negative numbers with a minus sign.

Python3

import re

Input = [[10, -11, 222], [42, -222, -412, 99, -87]]

pattern = r'bd+b'

Output = []

for elem in Input:

    temp = []

    for x in elem:

        if re.match(pattern, str(x)):

          temp.append(int(x))

    Output.append(temp)

print("Initial List is :", Input)

print("Modified list is :", Output)

Output

Initial List is : [[10, -11, 222], [42, -222, -412, 99, -87]]
Modified list is : [[10, 222], [42, 99]]

Time complexity: O(n*m), where n is length of Input list and m is length of sub lists in Input list.
Auxiliary Space: O(k), where k is length of Output list.

Last Updated :
09 May, 2023

Like Article

Save Article

0 / 0 / 0

Регистрация: 19.09.2018

Сообщений: 29

1

Вычислить сумму и количество положительных элементов массива

15.10.2018, 18:54. Показов 29561. Ответов 1


Студворк — интернет-сервис помощи студентам

Вычислить сумму и количество положительных элементов массива X(n), где 1<=n<=100
Буду очень признателен



0



Programming

Эксперт

94731 / 64177 / 26122

Регистрация: 12.04.2006

Сообщений: 116,782

15.10.2018, 18:54

Ответы с готовыми решениями:

Найти сумму и количество положительных элементов массива, предшествующих первому нулевому элементу (C++ -> Python)
int A = {1,2,3,-4,0,6,7,8,9,10};
int sum = 0, count = 0;
for (int i = 0; i &lt; 10; ++i)

Найти сумму и количество положительных элементов, расположенных между минимальным и максимальным элементами массива
/*
Дан массив А(30). Найти сумму и количество положительных элементов,
расположенных между…

Определить количество отрицательных, произведение положительных и количество нулевых элементов массива
Ввести массив, состоящий из 15 элементов целого типа. Определить количество отрицательных,…

В массиве вычислить сумму четных положительных элементов
3. В массиве, содержащем положительные и отрицательные целые числа, вычислить сумму четных…

1

ProgSad

8 / 5 / 7

Регистрация: 15.02.2018

Сообщений: 36

16.10.2018, 14:34

2

Лучший ответ Сообщение было отмечено Kolyanus12 как решение

Решение

Python
1
2
3
4
5
6
7
8
9
X = [1,32,6,-8,-6,8,9] #не полностью понял какой тебе массив нужен, так что поправишь
count = 0
Sum = 0
for i in X:
    if i > 0:
        count += 1
        Sum += i
print('Сумма: ', Sum)
print("Количество: ", count)



1



IT_Exp

Эксперт

87844 / 49110 / 22898

Регистрация: 17.06.2006

Сообщений: 92,604

16.10.2018, 14:34

2

29.12.2019Python, Программы Python

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

Метод № 1: Использование итерации

Input = [[10, -11, 222], [42, -222, -412, 99, -87]]

Output = []

for elem in Input:

    temp = []

    for x in elem:

        if x>0:

            temp.append(x)

    Output.append(temp)

print("Initial List is :", Input)

print("Modified list is :", Output)

Выход:

Initial List is : [[10, -11, 222], [42, -222, -412, 99, -87]]
Modified list is : [[10, 222], [42, 99]]

Метод № 2: Использование карты и списка понимания

Input = [[10, -11, 222], [42, -222, -412, 99, -87]]

temp = map(lambda elem: filter(lambda a: a>0, elem), Input)

Output = [[a for a in elem if a>0] for elem in temp]

print("Initial List is :", Input)

print("Modified list is :", Output)

Выход:

Initial List is : [[10, -11, 222], [42, -222, -412, 99, -87]]
Modified list is : [[10, 222], [42, 99]]

Метод № 3: Использование списка понимания

Input = [[10, -11, 222], [42, -222, -412, 99, -87]]

Output = [ [b for b in a if b>0] for a in Input]

print("Initial List is :", Input)

print("Modified list is :", Output)

Выход:

Initial List is : [[10, -11, 222], [42, -222, -412, 99, -87]]
Modified list is : [[10, 222], [42, 99]]

Рекомендуемые посты:

  • Python | Объединить список с общими элементами в списке списков
  • Python | Сортировка списка списков с похожими элементами списка
  • Python | Максимальная сумма элементов списка в списке списков
  • Python | Найти общие элементы в списке списков
  • Python | Преобразовать столбец в отдельные элементы списка списков
  • Python | Программа для подсчета количества списков в списке списков
  • Python | Проверьте, существует ли список в данном списке списков
  • Python | Способы суммирования списка списков и возврата списка сумм
  • Python | Преобразовать список списков в список строк
  • Python | Переставьте положительные и отрицательные элементы
  • Программа Python для печати положительных чисел в списке
  • Python | Конвертировать список в список списков
  • Программа Python для подсчета положительных и отрицательных чисел в списке
  • Python | Подсчет изменения знака в списке, содержащем положительные и отрицательные целые числа
  • Python | Разделить список на списки по определенному значению

Python | Получить положительные элементы из данного списка списков

0.00 (0%) 0 votes

x = [-3, -5, 4, 2, -2, -6, 5]
for i in x:
    if x[i] > 0:
        print(x[i])

Не могу понять что не правильно и почему выводит результат:
введите сюда описание изображения

Если x = [-3, -5, 3, 4, 2, -2, -6, 5].
Тогда выводит:
введите сюда описание изображения
Как сделать чтобы в первом случае вывело только 4, а во втором 3

strawdog's user avatar

strawdog

23.4k4 золотых знака19 серебряных знаков33 бронзовых знака

задан 2 дек 2020 в 19:30

P1CA5S0's user avatar

Варианты @Zhihar, @NykSu проходят весь список, а достаточно получить только один первый элемент из генератора:

print(next(filter(lambda i: i > 0, x)))

ответ дан 2 дек 2020 в 20:41

eri's user avatar

erieri

31.6k3 золотых знака26 серебряных знаков56 бронзовых знаков

а попробуйте так:

x = [-3, -5, 4, 2, -2, -6, 5]
print(list(filter(lambda i: i > 0, x))[0])

ответ дан 2 дек 2020 в 19:52

Zhihar's user avatar

ZhiharZhihar

36.8k4 золотых знака25 серебряных знаков66 бронзовых знаков

2

x = [-3, -5, 4, 2, -2, -6, 5]
for i in x:
    if i > 0:
        print(i)
        break # Прерывает цикл

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

ответ дан 2 дек 2020 в 19:37

Kers's user avatar

KersKers

3,1562 золотых знака7 серебряных знаков16 бронзовых знаков

1

if условие:
    #ваш код
    break

Тогда программа выйдет из цикла и не будет проверять другие елементы

cauf's user avatar

cauf

2,50412 серебряных знаков24 бронзовых знака

ответ дан 2 дек 2020 в 19:38

Roman's user avatar

RomanRoman

211 бронзовый знак

1

Можно и такой код, как вариант:

lst = [-3, -5, 4, 2, -2, -6, 5]
print([x for x in lst if x > 0][0])

Хоть выше с циклом быстрее выполнится.

ответ дан 2 дек 2020 в 20:10

NykSu's user avatar

NykSuNykSu

3092 серебряных знака8 бронзовых знаков

Добавлю функционального изврата, раз уж все пишут разные варианты. )

from operator import lt
from functools import partial
lst = [-3, -5, 4, 2, -2, -6, 5]
print(next(filter(partial(lt, 0), lst)))

ответ дан 2 дек 2020 в 20:32

CrazyElf's user avatar

CrazyElfCrazyElf

65.4k5 золотых знаков19 серебряных знаков50 бронзовых знаков

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

Бабичев Рама

Мастер

(1082)


5 лет назад

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

Юрий Моисеев

Оракул

(83754)


5 лет назад

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

UltimatuM

Оракул

(72867)


5 лет назад

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

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