我正在编写基于引理化的简单分类器,本质上我需要检查元组是否包含列表中的任何元素。简单示例:
>>> ['dog', 'bone'] in ('dog', 'cat', 'parrot')
返回False
,而我需要它来返回True
。最简单、最优雅的方法是什么?
任一:
any([val in ('dog', 'cat', 'parrot') for val in ['dog', 'bone']])
对于实际使用,不要在理解中声明列表和元组,因为这会无故浪费资源,你应该:
test_list = ['dog', 'bone']
available_items = ('dog', 'cat', 'parrot')
any([val in available_items for val in test_list])
另一种可能的解决方案:
set(['dog', 'bone']).intersection(set(('dog', 'cat', 'parrot'))) # Would return a non empty set if there is an intersection, which translates to true.
# Use case:
if set(['dog', 'bone']).intersection(set(('dog', 'cat', 'parrot'))):
print('intersection!')