是否有另一种(即使更长)的方法来编写此代码的yield
部分?我对这个功能不太熟悉,宁愿保持简单。
for i in range(0, len(lstInput) - intCount + 1):
if intCount == 1:
yield [lstInput[i]]
else:
current = lstInput[i]
remainder = lstInput[i+1:]
for rest in yieldLotto(remainder, intCount - 1):
yield [current] + rest
答案 0 :(得分:3)
另一种方法是将循环嵌入到调用程序中,或者将其更改为返回列表。但这意味着一切都将进入记忆中。
def foo():
return_list = []
for i in range(0, len(lstInput) - intCount + 1):
if intCount == 1:
return_list.append([lstInput[i]])
else:
current = lstInput[i]
remainder = lstInput[i+1:]
for rest in yieldLotto(remainder, intCount - 1):
return_list.append([current] + rest)
return return_list
老实说,我觉得收益率更高,这是Python的一个重要特征。我建议学习它。