3
考慮下面的代碼段重構幾個嵌套for循環的條件
for a in generator1():
if test(a):
for b in generator2():
if test(a, b):
for c in generator3():
if test(a, b, c):
print "Found {} {} {}".format(a, b, c)
使用test
之前每個循環是必要的,因爲發電機可以產生大量的值(10^6-10^8)。我不想做昂貴的計算,當清楚由於價值a
或b
整個三倍將不能通過測試。
這段代碼可以簡化嗎?如果我想添加更多的內部循環(五個測試四)?
使用列表。例如:'generators = [generator1,generator2]';並用列表調用測試:'args = [a] test(args)... args + = [b] test(args)' – nikniknik2016
@ nikniknik2016請您詳細說明一下嗎? –
我可能會把它寫成遞歸生成器 –