这个程序正在经历一个基于Web的开发环境,实际上是我尝试从itertools得到我需要的东西,在这种情况下我实际上无法导入。我已经稍微改变了功能以满足命名要求,但它应该基本相同。我目前的问题是reverse()没有实现,所以我必须解决这个问题。我尝试使用for循环创建一个列表,该循环在此函数的内部和外部迭代。我也尝试了没有()的当前版本。现在我遇到一个错误,当我运行它时,我超出了索引的范围。我有什么替代方法可以逆转?
def combinations_of_options(options, opt_len):
''' yields all combinations of option in specific length
'''
pool = tuple(options)
pool_len = len(pool)
if opt_len > pool_len:
return
indices = range(opt_len)
yield tuple(pool[index] for index in indices)
while True:
for index in (range(opt_len,-1,-1)): #this is the line that uses reversed
if indices[index] != index + pool_len - opt_len:
break
else:
return
indices[index] += 1
for dummy_index in range(index+1, opt_len):
indices[dummy_index] = indices[dummy_index-1] + 1
yield tuple(pool[index] for index in indices)