我有两个清单:
main_list = ['Smith', 'Smith', 'Roger', 'Roger-Smith', '42']
master_list = ['Smith', 'Roger']
我想计算在 main_list 字符串中从 master_list 中找到字符串的次数,而不是计算同一项目的两次。
示例:对于上面的两个列表,我的函数的结果应该是 4。“Smith”可以在 main_list 中检索 3 次。 'Roger 可以找到 2 次,但由于 'Roger-Smith' 中已经找到了 'Smith',所以这一次不再计算在内,所以 'Roger' 只算 1 次,总共 4 次。
我为了解而编写的函数如下,但我认为有一种更快的方法来做到这一点:
def string_detection(master_list, main_list):
count = 0
for substring in master_list:
temp = list(main_list)
for string in temp:
if substring in string:
main_list.remove(string)
count+=1
return count
一个内衬
>>>sum(any(m in L for m in master_list) for L in main_list)
4
迭代一遍main_list
并检查是否any
的值来自master_list
都在那个字符串中。这将为您留下一个布尔值列表。它会在找到一个后停止,因此只为每个字符串的计数添加 1。方便sum
计算所有的True
s 给你计数。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)