是否有替代(甚至更长)的方法来编写此代码的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
最佳答案
另一种方法是将循环嵌入到您的调用程序中,或者将其更改为返回列表。但这意味着所有内容都将进入内存。
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的重要功能。我建议学习它。
关于python - Python产量的替代方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23881220/