itertools.product:同様の要件複数のデカルト積をイテラブル。
これは、の形で使用されています。
itertools.product(*イテラブル、繰り返し= 1)、
生成物(X、反復= 3)は、製品(X、X、X)と同等です。
1.直接使用する:タプルを生成し、リストの合成
インポートitertoolsの AA = itertools.product([ ' チベット'、' 低下'、' 水' ]、[ ' 月'、' スター' ]) BB =リスト(AA) #のデカルト積を生成ため、デフォルトでは、REPEATあります1つの 印刷(BB)
2.提供仮定すると:= 3リピート
=リストrandom_list(itertools.product([ ' チベットは'、' 低下'、' 水' ]、[ ' 月'、' スター' ] = REPEAT。3 )) プリント(random_list) #このリスト長216
なぜそれが216ですか?
まず、繰り返しパラメータが提供されない場合、デフォルトは1であり、6の長さのリストを生成する -最初のパラメータから、数学的順列及び組合せによって表すことができる [「チベット『』低下、 『水』] 値が取得三可能であり;第二引数 [「月」は、「スター」] の値を取得し、二つの可能性があり、結果のように2×3 = 6種類。
そして、設定したリピート= 3すなわち繰り返しである= 1(デフォルト)結果を繰り返し2回(第1層としての結果の最後の3組の、すなわち合計)後、さらに順列及び組合せ最初から、結果(6種類結果)要素の6種類のいずれかをとることができ、同じトークン、彼らは6×6×6 = 216の組み合わせを持っているので、結果の6種類があるかもしれない第二及び第三の反復から採取した要素種。
もちろん、最初に合成され、次いで、タプルがリストからなります。
3.それが理解できるように、結果は以下のそれの27種類があります
リスト= random_list(itertools.product([ ' チベット'、' 低下'、' 水' ] = REPEAT。3 )) 印刷(random_list)
第一層3の結果が可能であるため、この3回行う(第一層の結果として三組の形成には、それぞれ3つの可能な結果を有する)、次いで、順列は3 * 3 * 3 =です結果の27種類。
4.ランダムリスト要素から採取された場合には、いくつかの単語(繰返さない要素の元のリストがそれ自体を繰り返さない)、使用可能random.sample方法。
インポートランダム random.seed( 1) #ランダムシードを設定し、同じ結果が乱数が整合して得られたかどうかを検出するために使用することができ 、N = 2 AA = random.sample(random_list、N) #のランダムリストのn個の要素 を印刷(AAを)
すなわち、上記の結果、27種類、ランダム除去の二種類から得ました。
5.この方法をするために使用することができる別の生成、生成はランダム座標ランダム座標方法:https://www.cnblogs.com/qi-yuan-008/p/12564710.html
リスト= random_list(itertools.product(レンジ(1,4)、範囲(1,2 ))) プリント(random_list) N = 2 AA = random.sample(random_list、N) #要素は、nのランダムリスト 印刷( AA)
参考: