Python 检查所有子列表中存在哪些项
我想收集每个子列表中存在的所有项目。 假设列表列表如下所示:Python 检查所有子列表中存在哪些项,python,list,Python,List,我想收集每个子列表中存在的所有项目。 假设列表列表如下所示: list[0] = ['A', 'B', 'C', 'D'] list[1] = ['X', 'B', 'A'] list[2] = ['R', 'C', 'A', 'B', 'X'] “A”和“B”存在于每个子列表中,我的目标是将它们保存到另一个列表中: list2 = ['A', 'B'] 我一直在尝试使用列表理解,但我不知道如何让它以我想要的方式工作。非常感谢您的帮助 试试这个: >>> list1 = [
list[0] = ['A', 'B', 'C', 'D']
list[1] = ['X', 'B', 'A']
list[2] = ['R', 'C', 'A', 'B', 'X']
“A”和“B”存在于每个子列表中,我的目标是将它们保存到另一个列表中:
list2 = ['A', 'B']
我一直在尝试使用列表理解,但我不知道如何让它以我想要的方式工作。非常感谢您的帮助 试试这个:
>>> list1 = [['A', 'B', 'C', 'D'], ['X', 'B', 'A'], ['R', 'C', 'A', 'B', 'X']]
>>> list2 = list(set(list1[0]).intersection(list1[1]).intersection(list1[2]))
>>> list2
['A', 'B']
试试这个:
>>> list1 = [['A', 'B', 'C', 'D'], ['X', 'B', 'A'], ['R', 'C', 'A', 'B', 'X']]
>>> list2 = list(set(list1[0]).intersection(list1[1]).intersection(list1[2]))
>>> list2
['A', 'B']
使用“设置交点”,然后将结果转换回列表
your_list = [
['A', 'B', 'C', 'D'],
['X', 'B', 'A'],
['R', 'C', 'A', 'B', 'X']
]
print(set.intersection(*map(set,your_list)))
如果您首先知道每个列表的值是唯一的,并且不关心顺序,那么您可以在原始代码中使用集合列表,因此这将简化为:
your_list = [
set(['A', 'B', 'C', 'D']),
set(['X', 'B', 'A']),
set(['R', 'C', 'A', 'B', 'X'])
]
print(set.intersection(*your_list))
注意:不要调用自己的变量
list
,因为它与内置的列表类型冲突,并且会变得非常混乱。使用设置交点,然后将结果转换回列表
your_list = [
['A', 'B', 'C', 'D'],
['X', 'B', 'A'],
['R', 'C', 'A', 'B', 'X']
]
print(set.intersection(*map(set,your_list)))
如果您首先知道每个列表的值是唯一的,并且不关心顺序,那么您可以在原始代码中使用集合列表,因此这将简化为:
your_list = [
set(['A', 'B', 'C', 'D']),
set(['X', 'B', 'A']),
set(['R', 'C', 'A', 'B', 'X'])
]
print(set.intersection(*your_list))
注意:不要调用您自己的变量
list
,因为它与内置的列表类型冲突,并且会变得非常混乱。如果顺序不重要,您可以使用set.intersection
:
l = [['A', 'B', 'C', 'D'],
['X', 'B', 'A'],
['R', 'C', 'A', 'B', 'X']]
list2 = list(set.intersection(*(set(sl) for sl in l)))
print(list2)
输出:
['A', 'B']
# or ['B', 'A']
如果顺序不重要,您可以使用
set.intersection
:
l = [['A', 'B', 'C', 'D'],
['X', 'B', 'A'],
['R', 'C', 'A', 'B', 'X']]
list2 = list(set.intersection(*(set(sl) for sl in l)))
print(list2)
输出:
['A', 'B']
# or ['B', 'A']
这是完美的,因为它允许动态数量的子列表!非常感谢。这是完美的,因为它允许动态数量的子列表!多谢各位。