Список и целочисленный запрос - PullRequest
0 голосов
/ 16 декабря 2009

Если бы у меня был список чисел и некоторые из них, возможно, отрицательные, как бы я убедился, что все числа в моем списке были положительными? Я могу преобразовать элементы списка в целые числа, это не проблема.

Еще один вопрос, я хочу сравнить элементы в моем списке с целочисленным значением, скажем «x», и суммировать все значения в моем списке, которые меньше x.

Спасибо.

Ответы [ 5 ]

4 голосов
/ 16 декабря 2009

Если у вас есть список Ns чисел (если это список строк, как в нескольких похожих вопросах, которые задавались недавно, каждый из них нужно будет преобразовать в int или любой другой тип номера, позвонив по номеру int [ [или float и т. д.]], список их абсолютных значений (если вы подразумеваете «гарантировать») равен

[abs(n) for n in Ns]

Если вместо этого вы хотите проверить , являются ли все числа >= 0, тогда

all(n >= 0 for n in Ns)

даст вам значение bool, точно соответствующее этой спецификации.

Сумма пунктов списка, которые <x равна

sum(n for n in Ns if n < x)

Конечно, вы можете объединить все эти виды операций за один цикл (например, если вам нужно взять abs(n), а также проверить, является ли он < x, проверить, является ли он >= 0, суммировать, что угодно). 1023 *

0 голосов
/ 16 декабря 2009

Если я правильно понимаю ваш вопрос, я полагаю, вы спрашиваете из-за некоторого класса о функциональном программировании.

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

0 голосов
/ 16 декабря 2009

Ответ / Первая часть:

>>> a = [1, 2, -3, 4, 5, 6]
>>> b = [1, 2, 3, 4, 5, 6]

>>> max(map(lambda x: x < 0, a))
False

>>> max(map(lambda x: x < 0, b))
True

Или просто используйте min:

>>> min(a) < 0
True

>>> min(b) < 0
False

Вторая часть:

>>> x = 3
>>> sum(filter(lambda n: n < x, a))
>>> 0

>>> sum(filter(lambda n: n < x, b))
>>> 3
0 голосов
/ 16 декабря 2009
>>>mylist = [1,2,3,-2]
>>>any(item for item in mylist if item < 0)
True
>>>mylist.pop()
-2
>>>any(item for item in mylist if item < 0)
False

отвечает на ваш первый вопрос.

>>> x = 3
>>> sum(item for item in mylist if item < x)
3

отвечает на ваш второй вопрос.

0 голосов
/ 16 декабря 2009
# input list is named "lst"
pos_list = [int(a) for a in lst if int(a) > 0]
# And num 2 (notice generator is used instead of list)
return sum(a for a in lst if a < x)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...