我有以下整数列表,我需要将它们相互交叉比较:
compare = [[2,4,5,7,8,10,12],[1,3,5,8,9,10,12],[1,2,4,6,8,10,11,12],[2,3,4,6,7,9,12]]
即使您不能在 Python 的列表中命名列表(我认为),我们也只是将每个子列表称为 a、b、c 和 d。
我想做的是制作一个 for 循环,它可以比较 2、3 或所有列表中是否存在任何一个整数。它自己的循环很简单,它遍历 a-d 中的所有整数,但是进行比较的条件非常复杂,或者可能只是冗长的循环,例如:
if i in a and i in b, or i in a and i in c... or i in a and i in b and i in c... or i in (every list):
pattern.append (i)
显然这是不切实际的。我已经查找了该问题的解决方案,但无济于事。另外, & 和 | 会吗?运算符无论如何都可用,还是我应该坚持使用 AND 和 OR?
在此先感谢您的帮助!
最佳答案
对于这个问题,我建议使用 itertools.chain
链接所有元素,然后计算您想要的任何元素的数量:
>>> import itertools
>>> new_list=list(itertools.chain(*compare))
[2, 4, 5, 7, 8, 10, 12, 1, 3, 5, 8, 9, 10, 12, 1, 2, 4, 6, 8, 10, 11, 12, 2, 3, 4, 6, 7, 9, 12]
>>> pattern=[i for i in new_list if new_list.count(i)>2]
>>> pattern
[2, 4, 8, 10, 12, 8, 10, 12, 2, 4, 8, 10, 12, 2, 4, 12]
关于python - 逻辑运算 (Python 3.4) - 有没有办法简化长条件语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26957563/