-2
私は再帰的に特定の要素の組み合わせを取得しました。 a = ['a1', 'a2', 'a3'], b = ['b1', 'b2'], c = ['c1', 'c2', 'c3']
python - 再帰的にリストを更新できません
については
を私は
[['a1', 'b1', 'c1'],['a1', 'b1', 'c2'],['a1', 'b1', 'c3'],['a1', 'b2', 'c1'],['a1', 'b2', 'c2'],['a1', 'b2', 'c3'],['a2', 'b1', 'c1'],['a2', 'b1', 'c2'],['a2', 'b1', 'c3'],['a2', 'b2', 'c1'],['a2', 'b2', 'c2'],['a2', 'b2', 'c3'],['a3', 'b1', 'c1'],
['a3', 'b1', 'c2'],['a3', 'b1', 'c3'],['a3', 'b2', 'c1'],['a3', 'b2', 'c2'],['a3', 'b2', 'c3']]
ている可能性のある組み合わせを取得したいが、結果はどのような私ではありません。:はIndexErrorが発生したとき、私は組み合わせを取得(一部を除くで)
欲しいです。
[['a3', 'b2', 'c3'], ['a3', 'b2', 'c3'], ['a3', 'b2', 'c3'], ['a3', 'b2', 'c3'], ['a3', 'b2', 'c3'], ['a3', 'b2', 'c3'], ['a3', 'b2', 'c3'], ['a3', 'b2', 'c3'], ['a3', 'b2', 'c3'], ['a3', 'b2', 'c3'], ['a3', 'b2', 'c3'], ['a3', 'b2', 'c3'], ['a3', 'b2', 'c3'], ['a3', 'b2', 'c3'], ['a3', 'b2', 'c3'], ['a3', 'b2', 'c3'], ['a3', 'b2', 'c3'], ['a3', 'b2', 'c3']]
最後の組み合わせのみが出てきます。
ここに私のコードです。私は正しい方法を教えてくれてありがとうと思います。
a = ['a1', 'a2', 'a3']
b = ['b1', 'b2']
c = ['c1', 'c2', 'c3']
def loop(lst, combi, combi_set, index=0):
try:
for a in lst[index]:
if len(combi) == len(lst):
for n, i in enumerate(combi):
if i.startswith(a[0]):
combi[n] = a
else:
combi.append(a)
loop(lst, combi, combi_set, index=index + 1)
except IndexError:
print(combi)
combi_set.append(combi)
return
set = []
loop([a, b, c], [], set, 0)
print(set)
が、これは特定のexcersiseですかあなただけのcarthesian製品が必要なのでしょうか?後者の場合、 'itertools.product(a、b、c)'を使用して、このホイールを再作成しないでください。 –
同じリストを何度も何度も繰り返し使用しています。そのリストを 'combi_set'に追加すると、**一つのリスト**への参照のリストになります。代わりにコピーを作成します。 –