私はリスト内のサブリストのすべての組み合わせをネストされたリストとして返すコードを作成しています。これは、再帰およびfor/inループを使用してのみ行うことができます。例えばitertoolsまたはlisttoolsを使用せずにリストのすべての組み合わせを作成するにはどうすればよいですか?
、
allCombos([1, 2, 3])
は、これは私がこれまで持っているコードです
[[1], [1, 2], [1, 2, 3], [2], [2, 3], [3]]
を返します:
def allCombos(alist, a=0, b=1):
newList = []
if b < len(alist) + 1:
newList += [alist[a:b]] + [allCombos(alist, a, b+1)]
elif b == len(alist):
a = a+1
b = a+1
newList += [allCombos(alist[a:len(alist)])]
else:
return newList
これだけを返すなし。私はここで間違って何をしていますか?どうすれば修正できますか?
[itertools.combinations'](https://docs.python.org/3/library/itertools.html#itertools.combinations)のエントリを参照してください。 Python。 'range(len(iterable)+1)'の 'r 'ごとに実行します。 –
割り当ての制限に基づき、itertoolsとlisttoolsは使用できません。 – mrcmc888