Check if element exists in tuple of tuples
我有一个看起来像元组的列表:
1 2 3 4 5 | CODES = ( ('apple', 'reddelicious'), ('caramel', 'sweetsticky'), ('banana', 'yellowfruit'), ) |
检查该元组中是否存在值的最佳方法是什么?例如,我希望能够说:
1 | 'apple' in CODES |
并得到True
您正在寻找
1 2 | if any('apple' in code for code in CODES): ... |
结合一个简单的生成器表达式,可以完成此任务。生成器表达式采用每个元组,如果包含
如果您要执行大量操作并且需要性能,那么可能值得对所有值进行一组设置以使您能够快速执行此操作:
1 | cache = set(itertools.chain.from_iterable(CODES))) |
自然地,构造它会很慢并且会占用内存,因此,除非您需要大量的性能并进行大量的成员资格检查,否则这不是一个好主意。
您可以使用
与
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | In [30]: CODES = ( ....: ('apple', 'reddelicious'), ....: ('caramel', 'sweetsticky'), ....: ('banana', 'yellowfruit'), ....: ) In [31]: from itertools import chain In [32]: 'apple' in chain(*CODES) Out[32]: True In [33]: 'foo' in chain(*CODES) Out[33]: False |
对于性能比较,您可以检查我的其他答案。