我正在试图弄清楚如何更改此代码。我希望能够返回列表中大于目标值的值的数量,而不是计算目标值出现的次数。
def countTarget2(myList, target):
counter = 0
for element in myList:
if element == target:
counter = counter + 1
return counter
我也改变了5行吗?
counter > counter + 1
答案 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