在功能条件下是否有在 'any' 和 'all' 之间切换的捷径?

Is there a short way to switch between 'any' and 'all' in condition in function?

我有一个函数可以检查几个参数列表:

def check_function(some_input_parameters):
  #do_smth
  ...

  if all(bet_res[i] for i in res_number_list):
     good_row_list.append(row_dict)
  else:
     bad_row_list.append(row_dict)
  #do_smth
  ...

在某些情况下我需要 "all",有时我需要 "any"。 是否有一个很好的简短方法来通过某些输入参数更改 all/any ? 我可以这样做,但我不喜欢它:

if any_all_flag = 'all':
        if all(bet_res[i] for i in res_number_list):
            good_row_list.append(row_dict)
        else:
            bad_row_list.append(row_dict)
else:
        if any(bet_res[i] for i in res_number_list):
            good_row_list.append(row_dict)
        else:
            bad_row_list.append(row_dict)

allany 函数接受可迭代对象,因此您无需再次遍历迭代器,除非您只想将这些函数应用于特定数量的项目。这里的一种巧妙方法是使用如下所示的字典来保存函数及其名称,以便您可以通过简单的索引访问相应的函数。

functions = {'all': all,
             'any': any}

if functions[any_all_flag](bet_res):
    # do stuff

只需使用仿函数(一个包含函数的变量):

if any_all_flag = 'all':
  my_functor = all
else:
  my_functor = any

if my_functor(bet_res[i] for i in res_number_list):
  good_row_list.append(row_dict)
else:
  bad_row_list.append(row_dict)