2017-03-02 9 views
0

私は答えをたくさん探しましたが、1つの項目を複数回追加するだけで答えを見つけることができます。または、2つのリストを掛けるだけです。変数に基づいて複数の項目をリストに追加できますか?

#ratio of bar 
ratio_variant1 = 0.1 
ratio_variant2 = 0.3 
ratio_variant3 = 0.4 
ratio_variant4 = 0.2 

ratio = [] 
ratio.extend([ratio_variant1, ratio_variant2, ratio_variant3, ratio_variant4]) 

#ratio to integer 
ratiointeger = [x*100 for x in ratio] 

#size of bar 
size_variant1 = 2 
size_variant2 = 3 
size_variant3 = 4 
size_variant4 = 6 

size = [] 
size.extend([size_variant1, size_variant2, size_variant3, size_variant4]) 

bucket = size * ratiointeger 

は私が比とサイズのリストを作成するための私の方法は実際にニシキヘビではないことを恐れているが、主な問題は、私はしてリスト/バケツを作ることができないんだということである。

10 items of 2 
30 items of 3 
40 items of 4 
20 items of 6 
+0

これはあなたが望むものですか? '[2] * 10'は' [2,2,2,2,2,2,2,2,2,2] 'を与えますか? – Elmex80s

+0

[Numpy repeat](https://docs.scipy.org/doc/numpy-1.10.1/reference/generated/numpy.repeat.html)、 'np.repeat'? –

+0

こんにちはマーク、あなたはアーカイブをしたいものをより良く説明できますか?期待される成果はどうあるべきですか? –

答えて

0

あなたが必要と私には思える:

その後

>>> [[s]*r for s, r in zip(size, ratiointeger)] 
[[2, 2, 2, 2, 2, 2, 2, 2, 2, 2], [3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3], [4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4], [6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6]] 

the method from this postを使用してそれらを平坦化:

これは、あなたが欲しいの繰り返しを含む、リストのリストを作成します。

+0

それは私が必要としていたものです。少なくとも私はそれのためにnumPyを必要としません。あなたはまた、比喩とサイズの配列を作成するための示唆を持っていますか? –

+0

@MarcdenH正直言って、なぜあなたは、それが 'ratiointeger = [x * [0.1、0.3、0.4、0.2]]のxに対して100ではなく、そのように書くのか分かりません。私はあなたにそれに理由があると思った。 – muru

+0

私はすべてを分けると間違っていると思う。すべてを明確にすることを意図していました。比とサイズを複数回変更する必要があります。だから、私はそれらをとても明示したのです。 –

0

これを試してみてください:

bucket = [[s] * int(r) for (s, r) in zip(size, ratiointeger)]

+0

これは他の答えよりも短くて、flattenメソッドを使用して希望のリストを作成できます。 –

関連する問題