Python查找列表元素的交集

2024-09-22 14:25:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我遇到了这样一个问题:
给定字符串列表,查找所有元素共有的字母数。比如说

mylist = ['abcdde',
          'baccd',
          'eeabg']

所需输出:2,因为所有元素只有'a''b'两个字母是公共的。
我的逻辑是以某种方式使用集合交集来查找公共元素。但我无法编写能够执行此操作的代码。
有人能帮忙吗。我还希望有任何其他逻辑可以更有效地完成任务(如果有)。
谢谢


Tags: 字符串代码元素列表字母方式逻辑mylist
2条回答

您可以将列表划分为多个集合,并使用以下方法查找交点:

sets_list = [{letter for letter in string} for string in mylist]

print(set.intersection(*sets_list))

在这里,您首先使用列表理解来构造集合列表,然后将这些集合传递到set.intersection函数will中,该函数将返回所需的值

您可以将每个字符串转换为set以查找唯一的元素,然后使用set.intersection查找所有集合中的公共元素

>>> set.intersection(*(set(i) for i in mylist))
{'a', 'b'}

要完全回答您的问题,您可以使用len来查找结果集中的元素数

>>> len(set.intersection(*(set(i) for i in mylist)))
2

相关问题 更多 >