是否有替代(甚至更长)的方法来编写此代码的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/

10-12 19:29