在没有计数方法的情况下,我如何找到某项在函数中出现的次数?
How do I find how much times something appears in a function without the count method?
我不太确定如何解释它,但我需要弄清楚如何在不使用 count 方法的情况下找到某项在函数中出现的次数。现在我有:
def contains(list_to_check, number):
value_amount = 0
for value in list_to_check:
if value == number:
value_amount += 1
return value_amount
else:
if value != number:
return 0
print(contains([4, 5, 6, 7, 8, 8, 4, 4, 2], 8))
而且我基本上需要弄清楚如何制作它 return 2 因为有 2 个 8。
你的函数可以简化为只有一个return out of loop
def contains(list_to_check, number):
return sum([x==number for x in list_to_check])
print(contains([4, 5, 6, 7, 8, 8, 4, 4, 2], 8))
您的解决方案接近正确答案,因为它遍历输入列表并将列表中的项目 (value
) 与输入参数 (number
) 进行比较。但是,return
语句使函数在第一次迭代时退出迭代。您可以打开 this link 并单击“下一步 >”按钮以查看 python 如何执行您的代码。
为了修复代码,您应该将 return 语句移动到函数的末尾,以便在 python 退出函数之前遍历所有项目。
def contains(list_to_check, number):
value_amount = 0
for value in list_to_check:
if value == number:
value_amount += 1
return value_amount
print(contains([4, 5, 6, 7, 8, 8, 4, 4, 2], 8))
虽然上述解决方案有效,但我会重构(即提高代码的可读性而不改变其行为)函数并编写以下函数:
def count_values(list_to_check, query):
count = 0
for value in list_to_check:
if value == query:
count += 1
return count
print(count_values([4, 5, 6, 7, 8, 8, 4, 4, 2], 8))
最后,请注意上述功能可能无法正常处理许多 non-integer 个号码。例如,count_values([0.3], 0.1+0.2)
returns 0
,而它应该 return 1
。请参阅 this article 以获得进一步的解释。为了解决这个问题,如果您的函数可以接受 non-integer 个数字,您可以使用以下函数:
from math import isclose
from numbers import Number
def count_values(list_to_check, query):
count = 0
for value in list_to_check:
if value == query or (
isinstance(query, Number)
and isinstance(value, Number)
and isclose(value, query)
):
count += 1
return count
print(count_values([4, 5, 6, 7, 8, 8, 4, 4, 2], 8))
我不太确定如何解释它,但我需要弄清楚如何在不使用 count 方法的情况下找到某项在函数中出现的次数。现在我有:
def contains(list_to_check, number):
value_amount = 0
for value in list_to_check:
if value == number:
value_amount += 1
return value_amount
else:
if value != number:
return 0
print(contains([4, 5, 6, 7, 8, 8, 4, 4, 2], 8))
而且我基本上需要弄清楚如何制作它 return 2 因为有 2 个 8。
你的函数可以简化为只有一个return out of loop
def contains(list_to_check, number):
return sum([x==number for x in list_to_check])
print(contains([4, 5, 6, 7, 8, 8, 4, 4, 2], 8))
您的解决方案接近正确答案,因为它遍历输入列表并将列表中的项目 (value
) 与输入参数 (number
) 进行比较。但是,return
语句使函数在第一次迭代时退出迭代。您可以打开 this link 并单击“下一步 >”按钮以查看 python 如何执行您的代码。
为了修复代码,您应该将 return 语句移动到函数的末尾,以便在 python 退出函数之前遍历所有项目。
def contains(list_to_check, number):
value_amount = 0
for value in list_to_check:
if value == number:
value_amount += 1
return value_amount
print(contains([4, 5, 6, 7, 8, 8, 4, 4, 2], 8))
虽然上述解决方案有效,但我会重构(即提高代码的可读性而不改变其行为)函数并编写以下函数:
def count_values(list_to_check, query):
count = 0
for value in list_to_check:
if value == query:
count += 1
return count
print(count_values([4, 5, 6, 7, 8, 8, 4, 4, 2], 8))
最后,请注意上述功能可能无法正常处理许多 non-integer 个号码。例如,count_values([0.3], 0.1+0.2)
returns 0
,而它应该 return 1
。请参阅 this article 以获得进一步的解释。为了解决这个问题,如果您的函数可以接受 non-integer 个数字,您可以使用以下函数:
from math import isclose
from numbers import Number
def count_values(list_to_check, query):
count = 0
for value in list_to_check:
if value == query or (
isinstance(query, Number)
and isinstance(value, Number)
and isclose(value, query)
):
count += 1
return count
print(count_values([4, 5, 6, 7, 8, 8, 4, 4, 2], 8))