itertools
「組み合わせイテレータ」のドキュメントを正しく理解していれば、一般的な組み合わせ反復ごとに一連の標準関数を提供するという考え方です。
でも今日は恋しいです。注文されたアイテムのすべての組み合わせを繰り返して繰り返す必要があります。
combination_with_replacement('abcd', 4)
収量
('a', 'a', 'a', 'a')
('a', 'a', 'a', 'b')
('a', 'a', 'a', 'c')
('a', 'a', 'a', 'd')
('a', 'a', 'b', 'b')
('a', 'a', 'b', 'c')
('a', 'a', 'b', 'd')
('a', 'a', 'c', 'c')
('a', 'a', 'c', 'd')
... etc
ただし(結果はソートされたタプルですが)、これらの組み合わせは順序付けられていません。
私ordered_combination_with_replacement('abcd', 4)
は私が区別する必要がある理想からより多くの結果を期待しています
('a', 'a', 'a', 'a')
('a', 'a', 'a', 'b')
('a', 'a', 'b', 'a')
('a', 'b', 'a', 'a')
('b', 'a', 'a', 'a')
('a', 'a', 'a', 'c')
('a', 'a', 'c', 'a')
... etc
言い換えれば、今日は順序が重要です。
itertoolはそのような反復を提供しますか?なぜそうではないのですか、またはなぜ私はそれを逃したのですか?
それらを反復する標準的な方法は何ですか?
このジェネリックイテレータを自分で作成する必要がありますか?
コメントの一部をまとめるには、(少なくとも)2つの方法があります。
itertools.combinations_with_replacement("abcd", 4)
そして
itertools.product("abcd", repeat=4)
どちらも、次の必要な結果を生成します。
[('a', 'a', 'a', 'a'),
('a', 'a', 'a', 'b'),
('a', 'a', 'a', 'c'),
('a', 'a', 'a', 'd'),
('a', 'a', 'b', 'a'),
...
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加