列表是另一个列表的子集

2024-05-15 16:45:28 发布

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

在Python中,给定两个对列表:

listA = [ [1,20], [3,19], [37,11], [21,17] ]
listB = [ [1,20], [21,17] ]

如果listB是listA的子集,如何高效地编写返回True的python函数?oh和[1,20]对等于[20,1]


Tags: 函数true列表子集ohlistalistb
2条回答

为了提供另一种选择,也许使用tuple和set更有效:

>>> set(map(tuple,listB)) <= set(map(tuple,listA))
True

使用frozenset

>>> listA = [ [1,20], [3,19], [37,11], [21,17] ]
>>> listB = [ [1,20], [21,17] ]

>>> setA = frozenset([frozenset(element) for element in listA])
>>> setB = frozenset([frozenset(element) for element in listB])

>>> setA
frozenset([frozenset([17, 21]), frozenset([1, 20]), frozenset([11, 37]), frozens
et([19, 3])])
>>> setB
frozenset([frozenset([17, 21]), frozenset([1, 20])])

>>> setB <= setA
True

相关问题 更多 >