【问题标题】:Python loop through a list and execute a function once if value is foundPython遍历一个列表并在找到值时执行一次函数
【发布时间】:2021-10-28 00:53:10
【问题描述】:

我想检查一个列表中是否有任何低于某个数字的值(例如检查任何低于 100 的值),然后如果有任何值符合此条件,则执行一个函数,但我只想执行一次该函数,不管有多少值符合标准。我无法只执行一次函数。

list = [97, 98, 99, 100, 101, 102]

for num in list:
    if num < 100:
        execute_function()

每次找到值时都会执行该函数。我只想执行一次,我对如何执行此操作一无所知。谢谢。

【问题讨论】:

  • break函数执行后退出for

标签: python list loops


【解决方案1】:

您可以拨打any()测试是否有任何号码符合条件。

if any(num < 100 for num in list):
    execute_function();

【讨论】:

    【解决方案2】:

    break 将您带出最里面的包含循环(forwhile)。

    for num in list:
        if num < 100:
            execute_function()
            break
    

    此外,如果条件不满足,您可以添加操作

    for num in list:
        if num < 100:
            execute_function()
            break
    else:
        print("no numbers less that 100")
    

    在这种情况下,else 会在没有中断的情况下运行。

    【讨论】:

      【解决方案3】:

      我理解您的问题意味着如果 execute_function 已运行,您希望继续循环,您只希望它运行一次。如果这是真的,您可以创建一个等于 False 的 bool 变量,当 execute_function 第一次运行时将其设置为 True

      list = [97, 98, 99, 100, 101, 102]
      
      ran_already = False
      
      for num in list:
          if num < 100 and ran_already == False:
              ran_already = True
              execute_function()
      

      【讨论】:

        【解决方案4】:
        from typing import Optional, Union
        
        
        class Handler:
        
            @staticmethod
            def check_data(data: Optional[Union[list, tuple]], criteria_value: int) -> bool:
                return any(num == criteria_value for num in data)
        
            @staticmethod
            def execute_function():
                print('execute')
        
        
        if __name__ == '__main__':
            uncheck_data = [1, 2, 3]
            criteria = 4
            if Handler.check_data(data=uncheck_data, criteria_value=criteria):
                Handler.execute_function()
            else:
                print('checked, no value meet criteria_value: {}'.format(criteria))
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-04-12
          • 1970-01-01
          • 1970-01-01
          • 2012-05-30
          • 2016-08-09
          • 2019-12-13
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多