Python 列表函数的困难

Python 列表函数的困难,python,Python,编写一个名为“counting”的函数,该函数将数字列表作为参数,并返回输入中介于29.88和48.05之间的数值(不包括这些端点)。(我的代码如下) def计数(数字): 总和=0 对于x的数字: 如果(29.88

编写一个名为“counting”的函数,该函数将数字列表作为参数,并返回输入中介于29.88和48.05之间的数值(不包括这些端点)。(我的代码如下)

def计数(数字):
总和=0
对于x的数字:
如果(29.88

如何返回输入中的值数而不是输入的第一个值?

您的返回语句缩进太深;您应该在for循环之后返回它。也不是一个好名字,因为它是一个内置函数,您可以覆盖它

您应该将
1
添加到总和(您正在计数)中,而不是
x
本身

您也可以使用内置功能尝试此操作:

def计数(数字):
返回和(数量为x时为29.88

(这实际上是
sum的缩写(如果29.88
,因为
True
基本上是
1
,而
False
基本上是
0
)。

或者与您的类似:

def counting(number):
    c = 0
    for x in number:
        if 29.88 < x < 48.05:
            c += 1
    return c
您还可以在列表中使用,只保留给定函数计算结果为true的元素

def counting(number):
    return len(list(filter(lambda x: 29.88 < x < 48.05, number)))
def计数(数字):
返回len(列表(过滤器(λx:29.88
您的
返回
在循环中,这将使它在一次迭代中返回。将其降低一级,使其处于for循环之外。此外,系统不会询问数字的总和,而是询问它们的计数。求和时,将元素本身添加到累积总数中。当你计数时,你会添加什么?将数字附加到列表中并返回列表的长度。对不起,误读了你所做的。所有计数都正确(尽管布尔值之和对新手来说可能有点难)@vash_the_stampede
number
是一个列表,因此应该是可编辑的。@vash_the_stampede
number
是一个列表,因此应该是可编辑的。@ElyFialkoff更正了,我错了
def counting(number):
    c = 0
    for x in number:
        if 29.88 < x < 48.05:
            c += 1
    return c
def counting(number):
    return len([29.88 < x < 48.05 for x in number])
def counting(number):
    return len(list(filter(lambda x: 29.88 < x < 48.05, number)))