擅长:python、mysql、java
<p>如果你的列表不是很庞大,如果内存不是问题,你可以使用这个简单的方法。在</p>
<p>要从<code>a</code>、<code>b</code>和{<cd4>}中获取{<cd1>}元素,可以将这三个列表连接在一起,并从结果列表中使用<a href="https://docs.python.org/2/library/random.html#random.choice" rel="nofollow noreferrer">^{<cd5>}</a>随机选取元素:</p>
<pre><code>import random
n = 50
a = ['a'] * 170
b = ['b'] * 120
c = ['c'] * 40
big_list = a + b + c
random_elements = [random.choice(big_list) for i in range(n)]
# ['a', 'c', 'a', 'a', 'a', 'b', 'a', 'c', 'b', 'a', 'c', 'a',
# 'a', 'a', 'a', 'b', 'b', 'a', 'a', 'a', 'a', 'a', 'c', 'a',
# 'c', 'a', 'b', 'a', 'a', 'c', 'a', 'b', 'a', 'c', 'b', 'a',
# 'a', 'b', 'a', 'b', 'a', 'a', 'c', 'a', 'c', 'a', 'b', 'c',
# 'b', 'b']
</code></pre>
<p>对于每个元素,您将得到一个<code>len(a) / len(a + b + c)</code>概率,从<code>a</code>获得一个元素。在</p>
<p>但是,同一个元素可能会多次出现。如果不希望发生这种情况,可以使用<a href="https://docs.python.org/2/library/random.html#random.shuffle" rel="nofollow noreferrer">^{<cd8>}</a>。在</p>