📌  相关文章
📜  计算频率等于其值的元素|套装2(1)

📅  最后修改于: 2023-12-03 15:28:05.222000             🧑  作者: Mango

计算频率等于其值的元素|套装2

此套装包含两个程序:frequency_equals_value.pytest_frequency_equals_value.py。它们都是用 Python 语言编写的,用于计算一个列表中频率等于其值的元素。

frequency_equals_value.py

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

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 计算元素频率,并将频率等于其值的元素加入结果列表中。测试用例包括多个场景,测试函数是否符合预期。