我遇到一个问题,如下所示:
给定一个字符串列表,找出所有元素的公共字母数。例如
mylist = ['abcdde',
'baccd',
'eeabg']
所需输出:2
,因为只有字母'a'
和'b'
对所有元素都是公共的
我的逻辑是以某种方式使用集合交集来查找公共元素。但我无法编写能够执行此操作的代码
有人能帮忙吗。我还希望有任何其他逻辑,可以更有效地完成任务(如果有的话(
感谢
您可以将每个字符串转换为set
来查找唯一元素,然后使用set.intersection
来查找所有集合中的公共元素。
>>> set.intersection(*(set(i) for i in mylist))
{'a', 'b'}
为了完全回答您的问题,您可以使用len
来查找结果集中的元素数量
>>> len(set.intersection(*(set(i) for i in mylist)))
2
您可以将列表划分为多个集合,并使用找到交集
sets_list = [{letter for letter in string} for string in mylist]
print(set.intersection(*sets_list))
在这里,您首先使用列表理解来构建一个集合列表,然后将这些集合传递给set.intersection
函数,该函数将返回所需的值。