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

时间:2016-06-03 08:02:44

标签: python random

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

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.shuffle()一个参数。谢谢你的回复。

5 个答案:

答案 0 :(得分:3)

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

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

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

random.sample(coordinaten, 20)
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版中的新功能。

见这里:

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]]

答案 1 :(得分:1)

我认为您可能正在寻找random.sample库中的random。可以找到文档https://wiki.eclipse.org/Eclipse.ini

您可以这样使用:

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

答案 2 :(得分:1)

请按照您对问题的评论意见。 无论如何,一种方法是使用shuffle。 Shuffle就是这样做的,这就是为什么你得不到任何回报。

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

答案 3 :(得分:1)

random.shuffle直接对输入参数进行随机播放并且不返回任何内容。

使用random.shuffle

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

但它改变了您的源列表。我的意见是:它不好。

您可以使用random.sample

import random
random.sample(coordinaten, 20)

答案 4 :(得分:-2)

尝试以下方法:

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))