Python-检查所有列表中是否存在任何项
我有一个Python列表(python3)。例如:Python-检查所有列表中是否存在任何项,python,python-3.x,Python,Python 3.x,我有一个Python列表(python3)。例如: list_of_lists = [[vendor1, vendor2], [vendor2, vendor5, vendor10], [vendor1, vendor2, vendor7]] 我想做的是找出列表中的所有列表中是否都有一个项目。我遇到的大多数示例中,用户都知道要在他们的列表中搜索什么值,因此我在这里提出了一个单独的问题,因为我没有搜索的起始值。上述列表的结果将返
list_of_lists = [[vendor1, vendor2],
[vendor2, vendor5, vendor10],
[vendor1, vendor2, vendor7]]
我想做的是找出列表中的所有列表中是否都有一个项目。我遇到的大多数示例中,用户都知道要在他们的列表中搜索什么值,因此我在这里提出了一个单独的问题,因为我没有搜索的起始值。上述列表的结果将返回vendor2
,因为它显示在所有列表中
任何帮助/一般“朝这个方向看”的建议都将不胜感激。谢谢假设
列表的所有元素都是字符串。使用设置
和交叉点
概念。为每个子列表创建一个集合,并对所有子列表进行交集
In [3]: list_of_lists = [["vendor1", "vendor2"],
...: ["vendor2", "vendor5", "vendor10"],
...: ["vendor1", "vendor2", "vendor7"]]
In [4]: set.intersection(*[set(x) for x in list_of_lists])
Out[4]: {'vendor2'}
假设列表的所有元素都是字符串。使用设置
和交叉点
概念。为每个子列表创建一个集合,并对所有子列表进行交集
In [3]: list_of_lists = [["vendor1", "vendor2"],
...: ["vendor2", "vendor5", "vendor10"],
...: ["vendor1", "vendor2", "vendor7"]]
In [4]: set.intersection(*[set(x) for x in list_of_lists])
Out[4]: {'vendor2'}
也可以尝试减少
:
from functools import reduce
list_of_lists = [["vendor1", "vendor2"],
["vendor2", "vendor5", "vendor10"],
["vendor1", "vendor2", "vendor7"]]
result = list(reduce(lambda a, b: set(a) & set(b), list_of_lists))
# ['vendor2']
也可以尝试减少
:
from functools import reduce
list_of_lists = [["vendor1", "vendor2"],
["vendor2", "vendor5", "vendor10"],
["vendor1", "vendor2", "vendor7"]]
result = list(reduce(lambda a, b: set(a) & set(b), list_of_lists))
# ['vendor2']
作为str或类别的供应商?作为str或类别的供应商?