Python - 列表的百分比相似度

pythonserver side programmingprogramming

在 Python 中测量两个列表的相似度是各种应用程序中经常执行的操作。无论您是在进行数据分析、文本处理、推荐系统还是社交网络分析,确定列表之间的相似度对于做出明智的判断和获得深刻的知识都至关重要。在本文中,我们将深入研究列表相似度这一主题,研究两种不同的估计相似度百分比的方法。

分析列表之间的重叠或共享元素对于确定它们的相似度是必要的。该指标提供了两个列表之间相似度的数值评估。它使我们能够有意义地测量相似度并量化重叠度。第一种方法采用集合数据结构,当不需要重复时,它特别有用,可以获取两个列表的交集。第二种方法是一次比较一个列表项,当计算共享元素的数量比删除重复项更有必要时,这种方法很合适。

方法

要使用 Python 查找列表的百分比相似度,我们可以遵循以下两种方法 -

  • 基于交集的相似度计算。

  • 基于元素的相似度计算。

让我们研究一下这两种方法 -

基于交集的相似度计算

基于交集的技术侧重于在评估两个列表之间的相似度时识别列表之间的共享组件。它利用 Python 默认包含的集合数据结构,该结构提供了一种快速方法来删除重复项并执行集合操作(​​如查找交集)。我们可以通过计算交集的大小并考虑列表的平均长度来计算百分比相似度。当不希望出现重复,而我们想集中精力于列表之间不同的共享元素时,这种策略非常有用。

算法

使用 Python 查找列表相似度百分比的算法如下 -

  • 步骤 1 - 创建一个以两个列表为参数的函数。

  • 步骤 2 - 计算两个列表之间的交集。

  • 步骤 3 - 计算两个列表之间的相似度百分比。

  • 步骤 4 - 返回结果。

  • 步骤 5 - 创建第一个和第二个列表。

  • 步骤 6 - 调用上述函数并将上述列表作为参数。

  • 第 7 步 - 显示结果。

示例

# 创建一个以两个列表为参数的函数
def similarity_compute(list_first, list_second):
    # 计算第一个和第二个列表的交集
    intersected_items = set(list_first).intersection(list_second)
    # 计算两个列表之间的相似度百分比
    lengthOfItersectedItems = len(intersected_items)
    similarity_percentage = (lengthOfItersectedItems / ((len(list_first) + len(list_second)) / 2)) * 100
    # 返回结果
    return similarity_percentage

# 创建第一个列表作为示例
firstList = [11, 22, 33, 44, 55]
# 创建第二个列表作为示例
secondList = [44, 55, 66, 77, 88]
# 调用上述函数
similarity_percentage = similarity_compute(firstList, secondList)
# 显示结果
print("相似度百分比:{:.2f}%".format(similarity_percentage))

输出

相似度百分比:40.00%

基于元素的相似度计算

基于元素的方法通过比较每个位置的元素来确定两个列表之间的相似度,这与基于交集的方法不同。它需要反复遍历一个列表并确定每个元素是否存在于另一个列表中。我们可以通过收集共享条目并将总数除以其中一个列表的长度来计算相似度百分比。当计算共同组件的出现次数比删除重复项更重要时,此方法是合适的。尽管它们各有不同,但它使我们能够根据共享项目的存在来判断列表之间的相似性。

算法

使用 Python 查找列表百分比相似度的算法如下 -

  • 步骤 1 - 创建以两个列表为参数的函数。

  • 步骤 2 - 获取一个变量 count,该变量保存列表中的公共值计数。

  • 步骤 3 - 遍历 for 循环并为每个列表计算公共元素。

  • 步骤 4 - 增加列表中每个公共元素的计数值。

  • 步骤 5 - 通过将公共值除以所有列表元素长度来计算相似度百分比。

  • 步骤 6 - 调用上述函数并将两个列表作为参数传递。

  • 步骤 7 - 显示结果。

示例

#创建一个以两个列表为参数的函数
def similarity_compute(first_list, second_list):
    #取 count 变量,计数列表中两个相交数
    count = 0
    #遍​​历第一个列表
    for element in first_list:
        #如果第二个列表包含第一个列表中的元素
        if element in second_list:
            #增加值
            count += 1
        #计算相似度百分比
        similarity_percentage = (count / len(first_list)) * 100
        return similarity_percentage

#以两个列表为例
first_list = [11, 22, 33, 44, 55]
# 第二个列表
second_list = [44, 55, 66, 77, 88]
# 调用上述函数
similarity_percentage = similarity_compute(first_list, second_list)
# 显示结果
print("相似度百分比:{:.2f}%".format(similarity_percentage))

输出

相似度百分比:40.00%

结论

在本文中,我们研究了两种在 Python 中计算列表相似度百分比的方法。虽然第二种方法包括逐元素比较,但第一种方法使用了集合交集操作。对于提供的示例列表,两种方法都产生了相同的相似度百分比。当选择一种方法时,考虑输入列表的特性和应用程序的需求至关重要。


相关文章