如何使此功能作为任意列表大小的输入?
def ugly_function(lst):
for a in lst[0]:
for b in lst[1]:
for c in lst[2]:
for d in lst[3]:
for e in lst[4]:
for f in lst[5]:
for g in lst[6]:
for h in lst[7]:
if some_test([a,b,c,d,e,f,g,h]):
return [a,b,c,d,e,f,g,h]
答案 0 :(得分:4)
def ugly_function(lst):
for comb in itertools.product(*lst):
if some_test(comb):
return comb
(或者,作为1-liner:
def ugly_function(lst):
return next(comb for comb in itertools.product(*lst) if some_test(comb))
答案 1 :(得分:2)
from itertools import ifilter, product
def nice_function(lst):
return ifilter(some_test, product(*lst)).next()