检查列表是否只包含给定“允许”列表中的元素

2024-04-16 10:14:57 发布

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

我有点希望在这件事上被“欺骗”。但在so2语言中,甚至在其他语言中,似乎没有这种Python式的“大脑锻炼”。在

假设我有一个“允许的”列表[ 45, 6, 155, 44 ],我提交了一个列表[ 6, 44, 19, 12 ]:我只想知道一个高效、优雅且非常漂亮的算法来获得结果:

LEGAL: [ 6, 44 ]
ILLEGAL: [ 19, 12 ]

PS am目前使用2.7,但也欢迎3.x答案!在


Tags: 答案算法语言列表amps大脑legal
3条回答

这应该对你有用。

permissible = [ 45, 6, 155, 44 ]
def get_legal(permissible, input):
    legal = [x for x in input if x in permissible]
    illegal = [x for x in input if x not in permissible]
    return legal, illegal
permissible = [45, 6, 155, 44]

要保留重复值:

^{pr2}$

或者,如果您使用的是唯一的哈希值:

legal = set(submission) & set(permissible)
illegal = set(submission) - set(permissible)

legal值维护为^{},然后将要检查的任何列表转换为一个集合,并确保它是legal^{}

相关问题 更多 >