【问题标题】:Modulo Operator on a set in PythonPython中集合上的模运算符
【发布时间】:2020-07-12 13:57:50
【问题描述】:

如何在一组数字上使用模运算符?

if value > 2 and value % 2 == 0 or value % 3 == 0 or value % 5 == 0 or value % 7 == 0 or value % 11 == 0: 
    return False

如何将所有这些“或”语句合并为更优雅的语句,例如“and value % set == 0”?

【问题讨论】:

  • 这不是“更优雅”,而是“有用的东西”:D
  • 我希望在单一条件下有一些抽象代数定理:P 也许值得在数学 stackexchange 上提问
  • @Adam.Er8 我不这么认为,因为这是一种素性测试。然而,这些测试是不值得的,因为只有 5 个数字要测试可分性。

标签: python set modulo


【解决方案1】:

您可以使用any(...):

value = 100

if value > 2 and (any(value % x == 0 for x in [2, 3, 5, 7, 11])):
    print(False)

【讨论】:

  • 我看到这是一个列表。顺序重要还是我可以使用一套?
  • @GlennBlakney:试一试 - 您可以使用任何生成所需数字的迭代器,包括列表、集合、字典、生成器或其他任何东西。
【解决方案2】:

使用any 哪个

如果 bool(x) 对于可迭代对象中的任何 x 为 True,则返回 True

checks = {2, 3, 5, 7, 9}
if value > 2 and any(value % check == 0 for check in checks):
    return False

【讨论】:

    【解决方案3】:
    numbers = [2, 3, 5, 7, 11]
    
    value = #define value here
    
    def modulo():
        for number in numbers:
            if value > 2:
                if value % number == 0:
                    return False
    
    modulo()
    

    【讨论】:

    • 注意:你不要在函数中使用你的参数(而是直接使用全局变量)
    • @Adam.Er8 注意!只是相应地编辑了我的答案。谢谢!
    • 虽然此代码可能会回答问题,including an explanation 关于如何以及为何解决问题将有助于提高您的回答质量。请记住,您也是在为将来的读者回答问题,而不仅仅是现在提出问题的人。
    【解决方案4】:

    试试这个:

    def Fun(value):
        if value > 2 and any([value%x==0 for x in [2, 3, 5, 7, 11]]):
            return False
        return True
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-27
      相关资源
      最近更新 更多