Python查找列表元素的交集



我遇到一个问题,如下所示:
给定一个字符串列表,找出所有元素的公共字母数。例如

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函数,该函数将返回所需的值。

最新更新