失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > python数组添加元素_python-将元素添加到数组的可能性

python数组添加元素_python-将元素添加到数组的可能性

时间:2020-10-07 23:18:56

相关推荐

python数组添加元素_python-将元素添加到数组的可能性

因此,我在Python中建立了一个列表,例如,让我们说前100个整数,但是我确实需要所有100个整数,但只有一个样本可以说3.

import random

def f():

list_ = []

for i in range(100):

list_.append(i)

return list_

def g(list_,k):

return random.sample(list_, k)

print(g(f(),3))

>>>[50, 92, 6]

现在我可以避免不首先构建整个列表,而是直接构建示例,也许是通过增加将元素添加到f()中的列表的概率来进行构建

因为如果我要建立一个庞大的列表,该列表不是整数,而是一些其他对象,那么这种方法在内存和计算方面可能会很昂贵.

解决方法:

def random_no_dups_k_of_n(k, n):

res = list(range(k))

for i in range(k, n):

v = random.randint(0, i) # this is 0-i inclusive

if v == i:

ir = random.randint(0,k-1)

res[ir] = i

return res

这里发生的事情:这是一种伸缩产品.从0到k-1的每个元素开始都有k / k的机会被选中.第一次迭代后,k有1 /(k 1)个被选择的机会,而所有其他(不仅是剩余的,而是所有)具有(k-1)/ k * k /(k 1)=(k-1)/ (k 1)被选中的机会.第2次迭代后,k 1的被选择机会为(/ k 2),而其他所有的都具有(k-1)/(k 1)*(k 1)/(k 2)=(k-1 )/(k 2)被选中的机会.等等.最后,每个数字都有k / n的机会被选中.

实际上

如果觉得《python数组添加元素_python-将元素添加到数组的可能性》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。