我有一个看起来像元组的列表:
CODES = ( ('apple', 'reddelicious'), ('caramel', 'sweetsticky'), ('banana', 'yellowfruit'), )
检查该元组中是否存在值的最佳方法是什么?例如,我想能够说:
'apple' in CODES
并得到真
您正在寻找any():
any()
if any('apple' in code for code in CODES): ...
结合一个简单的生成器表达式,就可以完成任务。生成器表达式接受每个元组,True如果包含则产生'apple'。any()然后True在请求的第一个项目返回时返回True(否则为False)。因此,这就是您想要的。它也可以很好地读取- 如果有任何元组包含'apple'。
True
'apple'
False
如果您要执行大量操作并且需要性能,那么可能值得设置所有值的集合以使您能够快速执行此操作:
cache = set(itertools.chain.from_iterable(CODES)))
自然地,构建它会很慢并且会占用内存,因此,除非您需要大量的性能并进行大量的成员资格检查,否则这不是一个好主意。