返回值大于目标值

时间:2013-09-10 23:11:51

标签: python

我正在试图弄清楚如何更改此代码。我希望能够返回列表中大于目标值的值的数量,而不是计算目标值出现的次数。

def countTarget2(myList, target):
    counter = 0
    for element in myList:
        if element == target:
            counter = counter + 1
    return counter

我也改变了5行吗?

counter > counter + 1

5 个答案:

答案 0 :(得分:4)

这种变化相当简单:

if element > target:  # if the element is greater than the target

不要忘记正确缩进此后的行。

请注意,编写此函数的大多数 Pythonic 方法是使用sum()

def countTarget2(myList, target):
    return sum(1 for element in myList if element > target)

答案 1 :(得分:2)

您可以使用列表理解方法:

def countTarget2(myList, target):
    return len([element for element in myList if element > target])

print countTarget2([1,2,3,4], 2)  # prints 2

UPD:

这实际上是一种简短形式:

def countTarget2(myList, target):
    l = []
    for element in myList:
        if element > target:
             l.append(element)
    return len(l)

所以,是的,有一个中间列表 - 生成器表达式是更好的选择。

答案 2 :(得分:2)

不,你只会改变line 4

def countTarget2(myList, target):
    counter = 0
    for element in myList:
        if element > target:
            counter = counter + 1
    return counter

请注意,if语句需要在line 5

上缩进

答案 3 :(得分:2)

您将第4行更改为if element > target:

def countTarget2(myList, target):
    counter = 0
    for element in myList:
        if element > target:
            counter += 1
    return counter

或者,你使用功能更强大(但初学者可能很难理解):

def countTarget2(myList, target):
    return len(x for x in myList if x < target)

P.S。我还将counter = counter + 1更改为更好看的counter += 1

答案 4 :(得分:1)

否则在这种情况下,您将等效测试更改为大于测试。

您目前正在测试element == target,它将在每个等价项上执行(正确缩进)counter = counter+1行。

要进行大于测试,您需要将测试更改为element > target

代码如下:

def countTarget2(myList, target):
    counter = 0
    for element in myList:
        if element == target:
            counter = counter + 1 # properly indented, dont forget this!
    return counter