在功能条件下是否有在 '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)
all
和 any
函数接受可迭代对象,因此您无需再次遍历迭代器,除非您只想将这些函数应用于特定数量的项目。这里的一种巧妙方法是使用如下所示的字典来保存函数及其名称,以便您可以通过简单的索引访问相应的函数。
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)
我有一个函数可以检查几个参数列表:
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)
all
和 any
函数接受可迭代对象,因此您无需再次遍历迭代器,除非您只想将这些函数应用于特定数量的项目。这里的一种巧妙方法是使用如下所示的字典来保存函数及其名称,以便您可以通过简单的索引访问相应的函数。
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)