itertools.product と同じように機能する関数が必要ですが、項目を繰り返さないでください。
例えば:
no_repeat_product((1,2,3), (5,6))
= ((1,5), (None,6), (2,5), (None,6), ...(None,6))
no_repeat_product((1,2,3), (5,6), (7,8))
= ((1,5,7), (None,None,8), (None,6,7), (None,None,8), ...(None,None,8))
何か案は?
編集:私の言い回しは正しくありませんでした。連続する出力値で同じ数値を繰り返さないことを意味しました。
例えば、
itertools.product((1,2,3), (4,5), (6,7) is
(1,4,6)
(1,4,7), etc
ここでは、出力に 1,4 が 2 回表示されます。なので、前の項目と同じ数字の場合は省略したいと思います。したがって、私が望む出力は次のとおりです。
(1,4,6)
(None,None,7)
None の場合は、結果の前の項目と同じであることがわかります。
さらに編集:
私の説明はまだはっきりしていませんでした。本、章番号、ページ番号のリストがあるとします。各本には同じ数の章があり、各章には同じ数のページがあると仮定します。したがって、リストは (book1, book2, book3), (chap1, chap2), (page1, page2, page3) です。
ここで、各ページの説明を収集したいとします:
itertools.product は以下を提供します:
(book1, chap1, page1), (book1, chap1, page2)..... (book3, chap2, page3)
これらのページを連続して配置した場合、説明を繰り返す必要はありません。したがって、本と章が同じ場合、2 ページ目には本と章の名前は必要ありません。出力は次のようになります。
(book1, chap1, page1), (None, None, page2), ..
(when the pages of first chapter are over..) (None, chap2, page1), (None, None, page2)......
(when the chapters of the first book are over..)(book2, chap1, page1)..............
(None, None, page3)