计算列表中的项目 - python方式

时间:2014-05-16 00:36:48

标签: python list

我的代码:

result = 0
for line_A in text_A:
    for line_B in text_B:
        if line_A in line_B:
            result += 1
            break
return result / len(text_A)

非常简单:如果line_A中存在来自text_A的{​​{1}},请计算并检查另一个。我想知道我是否遗漏了一些实用工具,或者这种方法是否100%正确? TIA

2 个答案:

答案 0 :(得分:4)

您可以将两个文本转换为集合并使用交集,就像这样

len(set(text_A) & set(text_B)) / len(text_A)

但问题是,如果有重复的文字,那么它只会被计算一次。所以,你可能想要使用

sum(line_A in text_B for line_A in text_A) / len(text_A)

但如果line_A可以位于line_B中的任何位置,那么您拥有的内容是正确的,并且可以像这样简洁地书写

sum(any(line_A in line_B for line_B in text_B) for line_A in text_A)/len(text_A)

答案 1 :(得分:0)

如果我理解你的问题是正确的,这可能会有所帮助:

from collections import Counter

>>> text_a = 'some text'
>>> a = Counter(text_a.split())
>>> text_b = 'other text'
>>> b = Counter(text_b.split())
>>> a & b
Counter({'text': 1})