我是靠谱客的博主 迷人手链,最近开发中收集的这篇文章主要介绍python random sample_Python的例外随机样例(Python random sample with exception),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

Python的例外随机样例(Python random sample with exception)

我试图创建myList的示例,但i_除外。

我的尝试:

i_ = 'd'

myList = ['a','b','c','d','e']

myList = random.sample(myList, 3)

虽然上面的示例工作正常,但仍有可能从myList删除i_ 。

我想创建一个没有删除i_值的示例。

期望的输出:

任何包含3个项目的列表输出,包括i_ ,例如:

['a','d','e']

I'm attempting to create a sample of myList with the exception of i_.

My Attempt:

i_ = 'd'

myList = ['a','b','c','d','e']

myList = random.sample(myList, 3)

Although the above sample works fine, there is still a chance that i_ is removed from myList.

I would like to create a sample without the value of i_ being removed.

Desired Output:

Any list output containing 3 items including i_, e.g:

['a','d','e']

原文:https://stackoverflow.com/questions/46921831

更新时间:2019-10-27 22:04

最满意答案

只需从列表中抽取2个不带i_并稍后插入i_ :

new_list = random.sample([i for i in myList if i != i_], 2)

new_list.insert(random.randrange(0, 3), i_)

但是这个假设i_只在您的列表中出现过一次 - 根据您的示例看起来似乎是合理的,但我想提一下完整性。 此外,如果列表中有多个i_ ,我不确定期望的结果应该是什么。

你也可以使用命中和错过的方法来生成一个样本,直到你得到一个包含i_的样本:

new_list = []

while i_ not in new_list:

new_list = random.sample(myList, 3)

请注意,如果在样本中不太可能绘制i_ ,则这可能会非常慢。 对于5个元素的3个样本来说,速度相当快,但如果您从1000个元素中抽取3个样本, 速度可能会非常慢 。

Just sample 2 values from the list without the i_ and insert i_ later:

new_list = random.sample([i for i in myList if i != i_], 2)

new_list.insert(random.randrange(0, 3), i_)

But this assumes that i_ occurs only once in your list - seems reasonable given your example but I wanted to mention this for completeness. Also I'm not sure what the desired result should be if there were multiple i_ in the list.

You could also use a hit&miss approach that generates a sample until you get one that contains i_:

new_list = []

while i_ not in new_list:

new_list = random.sample(myList, 3)

Note that this could be really slow if it's unlikely that i_ is drawn in the sample. For a 3-sample of 5 elements it's quite fast but it could be really slow if you draw a 3-sample from 1000 elements.

2017-10-25

相关问答

Python标准库random模块 (生成随机数模块) random.random() random.random()用于生成一个0到1的随机符点数: 0 b,则生成的随机数n: b

Python标准库random模块 (生成随机数模块) random.random() random.random()用于生成一个0到1的随机符点数: 0 b,则生成的随机数n: b

Python标准库random模块 (生成随机数模块) random.random() random.random()用于生成一个0到1的随机符点数: 0 b,则生成的随机数n: b

只需从列表中抽取2个不带i_并稍后插入i_ : new_list = random.sample([i for i in myList if i != i_], 2)

new_list.insert(random.randrange(0, 3), i_)

但是这个假设i_只在您的列表中出现过一次 - 根据您的示例看起来似乎是合理的,但我想提一下完整性。 此外,如果列表中有多个i_ ,我不确定期望的结果应该是什么。 你也可以使用命中和错过的方法来生成一个样本,直到你得到一个包含i_的样本: new

...

random.sample(population,k) Return ak length list of unique elements chosen from the population sequence. Used for random sampling without replacement. 要从一系列整数中选择样本,请使用range()对象作为参数 >>> import random

>>> print random.sample(range(1,100),3)

[77, 29, 45

...

没有使用标准库? >>> import itertools

>>> dataset = ['1','2','3A','4']

>>> list(itertools.combinations(dataset, 3))

[('1', '2', '3A'), ('1', '2', '4'), ('1', '3A', '4'), ('2', '3A', '4')]

With not use standard library? >>> import itertools

>>> dataset = ['1'

...

您可以通过简单地检查数字然后将其附加到列表然后使用数字来实现这一目标。 import random

non_match = [443, 122, 738]

match = []

while len(match) < 6: # Where 6 can be replaced with how many numbers you want minus 1

x = random.sample(range(0,999),1)

if x not in non_match:

...

random.sample(population, k) 给定一个population序列,它返回一个长度为k的列表,其中包含从population选择(或选择 )的元素。 选择顺序是指选择每个元素的顺序 (随机)。 因此,列表不按人口中的索引排序,而是按选择的方式排序。 因此,返回列表的任何子列表也是总体的随机样本。 示例 - >>> import random

>>> population=[1,2,3,4,5,6,7,8,9,10,11,12,]

>>> ls=random.sample(p

...

无论元素是否可以清洗,您都可以对列表进行采样: data = create_dataset() # List of data to be sampled

n_samples = 100000

samples = random.sample(data,n_samples)

You can sample your list regardless of if the elements are hashable or not: data = create_dataset() # List of dat

...

只需使用它 >>> from string import ascii_lowercase, ascii_uppercase

>>> ascii_lowercase

'abcdefghijklmnopqrstuvwxyz'

>>> ascii_uppercase

'ABCDEFGHIJKLMNOPQRSTUVWXYZ'

如果要生成数字,可以使用range >>> map(str, range(10))

['0', '1', '2', '3', '4', '5', '6', '7', '8', '9

...

最后

以上就是迷人手链为你收集整理的python random sample_Python的例外随机样例(Python random sample with exception)的全部内容,希望文章能够帮你解决python random sample_Python的例外随机样例(Python random sample with exception)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(37)

评论列表共有 0 条评论

立即
投稿
返回
顶部