📅  最后修改于: 2023-12-03 15:28:05.222000             🧑  作者: Mango
此套装包含两个程序:frequency_equals_value.py
和 test_frequency_equals_value.py
。它们都是用 Python 语言编写的,用于计算一个列表中频率等于其值的元素。
frequency_equals_value.py
包含一个函数 freq_equals_value(lst: List[int]) -> List[int]
,它接受一个整数列表作为输入,返回一个整数列表,包含列表中频率等于其值的元素。
from typing import List
def freq_equals_value(lst: List[int]) -> List[int]:
"""
给定一个整数列表,返回其中频率等于其值的元素。
Args:
lst: 一个整数列表
Returns:
一个整数列表,包含列表中频率等于其值的元素
"""
>>> lst = [1, 2, 3, 4, 4, 5, 5, 6, 6, 6, 7]
>>> freq_equals_value(lst)
[4, 5, 6]
函数 freq_equals_value
首先使用 collections.Counter
计算列表中每个元素的频率,然后将频率与元素值比较,将频率等于其值的元素加入结果列表中。
import collections
from typing import List
def freq_equals_value(lst: List[int]) -> List[int]:
count = collections.Counter(lst)
result = [k for k, v in count.items() if k == v]
return result
test_frequency_equals_value.py
包含用于测试 frequency_equals_value
函数的测试用例。
使用 unittest
模块编写测试用例,测试 freq_equals_value
函数是否正确计算。包括以下测试用例:
import unittest
from frequency_equals_value import freq_equals_value
class TestFreqEqualsValue(unittest.TestCase):
def test_empty_list(self):
self.assertEqual(freq_equals_value([]), [])
def test_no_element_equals_frequency(self):
self.assertEqual(freq_equals_value([1, 2, 3]), [])
def test_one_element_equals_frequency(self):
self.assertEqual(freq_equals_value([1, 2, 2]), [2])
def test_multiple_elements_equals_frequency(self):
self.assertEqual(freq_equals_value([1, 2, 2, 3, 3, 3]), [3])
def test_multiple_equal_elements_equals_frequency(self):
self.assertEqual(freq_equals_value([1, 2, 2, 3, 3, 3, 3]), [2, 3])
if __name__ == '__main__':
unittest.main()
此套装提供了一个函数和相关测试用例,用于计算列表中频率等于其值的元素。函数使用 collections.Counter
计算元素频率,并将频率等于其值的元素加入结果列表中。测试用例包括多个场景,测试函数是否符合预期。