如果我有一个数字列表而某些可能是否定的,我如何确保列表中的所有数字都是正数?我可以将列表中的项目转换为没有问题的整数。
另一个问题,我想将列表中的项目与整数值进行比较,说“x”并将列表中所有小于x的值相加。
谢谢。
答案 0 :(得分:4)
如果您有一个数字列表Ns
(如果它是一个字符串列表,就像最近询问的几个类似问题一样,每个都必须通过调用{{}来形成一个int或其他任何类型的数字。 1}} [[或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
,总结,无论如何)。
答案 1 :(得分:0)
# 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)
答案 2 :(得分:0)
>>>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
回答你的第二个问题。
答案 3 :(得分:0)
答案/第一部分:
>>> 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
答案 4 :(得分:0)
如果我理解你的问题,我猜你是因为某些关于函数式编程的课程。
在这种情况下,您可以使用Python中的functional programming tools来完成所要求的内容 特别是,第一个点可以使用filter来解决,而第二个点可以使用map和reduce(或者更好,使用map和sum)。