我想使用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)
答案 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
}