擅长:python、mysql、java
<p>从Python 3.6开始,您可以直接使用<a href="https://docs.python.org/3/library/random.html#random.choices" rel="nofollow noreferrer">^{<cd1>}</a>。</p>
<pre><code>random.choices(list_of_lists, k=sample_size)
## [[1, 2], [3, 4], [3, 4], [1, 2]]
</code></pre>
<p>一个粗略的基准表明,与列表理解方法相比,这种方法在不同的样本量上似乎更有效。</p>
<pre><code>>>> list_of_lists = [[1, 2], [3, 4]]
>>> sample_size = 4
>>> %timeit [random.choice(list_of_lists) for _ in range(sample_size)]
<b>4.49 µs ± 20.9 ns per loop</b> (mean ± std. dev. of 7 runs, 100000 loops each)
>>> %timeit random.choices(list_of_lists, k=sample_size)
<b>1.99 µs ± 14.1 ns per loop</b> (mean ± std. dev. of 7 runs, 100000 loops each)
>>> list_of_lists *= 100
>>> sample_size *= 1000
>>> %timeit [random.choice(list_of_lists) for _ in range(sample_size)]
<b>3.54 ms ± 28.7 µs per loop</b> (mean ± std. dev. of 7 runs, 100 loops each)
>>> %timeit random.choices(list_of_lists, k=sample_size)
<b>927 µs ± 1.39 µs per loop</b> (mean ± std. dev. of 7 runs, 1000 loops each)</code></pre>