python - 逻辑运算 (Python 3.4) - 有没有办法简化长条件语句?

标签 python if-statement python-3.x logic logical-operators

我有以下整数列表,我需要将它们相互交叉比较:

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/

相关文章:

python - 如何清除 urllib.request 中的 cookie(python3)

python - 获取声音文件中给定时间的振幅?

swift - Swift 中 if 语句和循环的所有括号都是可选的吗?

Mysql where if 条件

python - 循环直到每个元素返回 true

django - 与 factory boy 和 pytest 一起使用的自定义 faker 提供程序

python - 如何将 O(N*M) 优化为 O(n**2)?

python - 获取发送到/从某个号码发送的消息总数 - Twilio Python API

python - Pandas 删除括号之间的字符

python - Kivy - 如何在循环中调用trigger_action()并使其正常运行?