Python random.sample:返回整个列表,而不是“样本大于总体”错误

时间:2018-07-26 13:20:04

标签: python

我想使用python的random.sample从列表中随机抽取k个元素。 人口的数量是先验的,在某些情况下可能小于k:在这种情况下,我只希望返回整个列表。

在我看来,这是一个非常普通和直接的用例,所以我想知道是否有一种方法可以避免我觉得有些冗长的代码:

# whole_population is a list of elements
# k is an int with  the size of the sample needed
random.sample(whole_population, min(k, len(whole_population))

而是这样:

random.sample(whole_population, k, error_if_k_too_big=False)

2 个答案:

答案 0 :(得分:2)

您可以添加一个if语句:

if k > len(whole_population):
    k = len(whole_population)

含义k永远不会比whole_population中的元素数大,因此将满足下面提到的条件。

  

,在某些情况下,它可能小于k:在这种情况下,我只希望返回整个列表。

希望这会有所帮助!

答案 1 :(得分:1)

您可以使用错误处理:

{
  "type": "object",
  "properties": {
    "foo": {
      "type": "string"
    },
    "bar": {
      "type": "string"
    }
  },
  "if": {
    "properties": {
      "foo": {
        "enum": [
          "bar"
        ]
      }
    },
    "required": [
      "foo"
    ]
  },
  "then": {
    "required": [
      "bar"
    ]
  },
  "else": false
}