2017-09-25 3 views
1

私のプログラムは、ユーザに数字を無期限に入力するように要求し、それをリストに追加します。私がやりたいことリスト(無限長)を3つのサブグループにランダムにどのように分けるのですか?

#Given Example: 
List = [105, 167, 262, 173, 123, 718, 219, 272, 132] 

がランダムに数字のいずれかを選択することですので、私のサンプル出力は次のようになります。

first = [105, 262, 173] 
second = [167, 123, 132] 
third = [718, 219,272] 

が言った、それそのチャンスがあるだろう、ユーザの入力が不定になりますので、奇数になります。

私は現在、リストから数字を選択してリストに追加するためにrandom.sampleを使用しています。その後、listのサブグループを追加してリスト内のリストを作成します。

誰かが答えると大きな助けになるでしょう、ありがとう!

+4

リストに 'random.shuffle'を使わないのはなぜでしょうか?あなたは何かを選んで、チャンク内のデータをグループ化します。https://stackoverflow.com/questions/312443/how-do-you-split- a-list-into-evenly-sized-chunk? –

答えて

3

あなたはrandom.shuffleであなたのリストをシャッフルすることができます:

>>> import random 
>>> l = [105, 167, 262, 173, 123, 718, 219, 272, 132] 
>>> random.shuffle(l) 
>>> l 
[167, 123, 173, 718, 262, 272, 105, 219, 132] 

そしてslicingで3サブリストを抽出します。 、ボーナスとして

>>> l[::3] 
[167, 718, 105] 
>>> l[1::3] 
[123, 262, 219] 
>>> l[2::3] 
[173, 272, 132] 

:最初のリストは、第二のリストはインデックス1、図4および図7を有しているインデックス0、シャッフルlから3及び6を有し、第三の、インデックス2、図6および図8を有しています

>>> l = [1, 2, 3, 4, 5] 
>>> random.shuffle(l) 
>>> [l[x::3] for x in range(3)] 
[[2, 4], [1, 5], [3]] 

すべての要素がネストされたリストに一度正確に表示されます。

ます。また、定義することができ、よりサブリスト:

>>> l = list(range(20)) 
>>> n = 5 
>>> random.shuffle(l) 
>>> [l[x::n] for x in range(n)] 
[[5, 18, 9, 4], [11, 12, 1, 15], [13, 3, 6, 8], [17, 0, 14, 2], [10, 16, 7, 19]] 
+0

そんなことは考えたことはありません。私は手動でランダムに生成された番号を追加しようとすることによって、私の人生を苦労させていました。 –

0

リストは、あなたがそれをメモリに読み込むことができるように短いままに起こっている場合、あなたは今すぐリストを使用[random.shuffle][1]

import random 
List = [105, 167, 262, 173, 123, 718, 219, 272, 132] 

random.shuffle(List) 
first = L[0:3] 

を使用することができますオリジナルを引き出す理解度first

newList = [item for item in List if item not in first] 

secondthirdにはnewListを使用してください。 :)

関連する問題