python从列表中选择20个随机结果

Python pick 20 random results from list

本问题已经有最佳答案,请猛点这里访问。

我想从以下列表中获得20个随机结果:

1
2
3
4
5
6
7
8
coordinaten = [
  [20, 140], [40, 140], [60, 140], [80, 140], [100, 140], [120, 140],
  [20, 120], [40, 120], [60, 120], [80, 120], [100, 120], [120, 120],
  [20, 100], [40, 100], [60, 100], [80, 100], [100, 100], [120, 100],
  [20, 80], [40, 80], [60, 80], [80, 80], [100, 80], [120, 80],
  [20, 60], [40, 60], [60, 60], [80, 60], [100, 60], [120, 60],
  [20, 40], [40, 40], [60, 40], [80, 40], [100, 40], [120, 40]
]

我尝试随机播放。随机播放,但它返回一个空列表。

我希望有人能帮助我。

编辑:使其正常工作,不知道可以为random.shuffle()提供参数。谢谢你的回复。


您可以使用random.choice()20次,但这不会是"唯一的"——元素可能会重复,因为每次随机选择一个元素:

1
[random.choice(coordinaten) for _ in xrange(20)]

如果需要随机排列20个唯一值,请使用random.sample()

1
random.sample(coordinaten, 20)
1
2
3
4
random.sample(population, k)?

Return a k length list of unique elements chosen from the population
sequence. Used for random sampling without replacement.

2.3版新增。

请参见这里:

1
2
3
4
5
In [14]: print random.sample(coordinaten, 20)
[[80, 60], [40, 100], [80, 100], [60, 80], [60, 100], [40, 60], [40, 80], [80, 120], [120, 140], [120, 100], [100, 80], [40, 120], [80, 140], [100, 140], [20, 80], [120, 80], [100, 100], [20, 40], [120, 120], [100, 120]]

In [15]: print [random.choice(coordinaten) for _ in xrange(20)]
[[80, 80], [40, 140], [80, 140], [60, 60], [120, 100], [20, 120], [100, 80], [120, 100], [20, 60], [100, 120], [100, 40], [80, 80], [100, 80], [80, 120], [20, 40], [100, 80], [60, 80], [80, 140], [40, 40], [120, 40]]

random.shuffle直接对输入参数进行无序处理,不返回任何内容。

使用random.shuffle时:

1
2
import random
random.shuffle(coordinaten)[:20]

但它会更改源列表。我的意见:不好。

您可以使用random.sample

1
2
import random
random.sample(coordinaten, 20)


请按照评论中的建议回答您的问题。总之,一种方法是使用随机播放。洗牌就是这样,所以你得不到任何回报。

1
2
3
from random import shuffle
shuffle(coordinaten)
result = coordinaten[:20]


我想你可能在random图书馆找random.sample。文档可以在这里找到。

您可以这样使用:

1
2
import random
my_new_list = random.sample(coordinates, 20)

尝试以下配方:

1
2
3
4
5
6
7
8
9
10
coordinaten = [[20, 140], [40, 140], [60, 140], [80, 140], [100, 140], [120, 140],
           [20, 120], [40, 120], [60, 120], [80, 120], [100, 120], [120, 120],
           [20, 100], [40, 100], [60, 100], [80, 100], [100, 100], [120, 100],
           [20, 80], [40, 80], [60, 80], [80, 80], [100, 80], [120, 80],
           [20, 60], [40, 60], [60, 60], [80, 60], [100, 60], [120, 60],
           [20, 40], [40, 40], [60, 40], [80, 40], [100, 40], [120, 40]]

import random

print(random.sample(coordinaten, 20))