首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >统一删除给定python列表中10%的所有元素的快速方法

统一删除给定python列表中10%的所有元素的快速方法
EN

Stack Overflow用户
提问于 2015-03-11 06:45:18
回答 2查看 491关注 0票数 2

这个问题是双重的。首先,根据我的理解,从一个给定的列表中统一删除10%的想法如下所示。(1):计算10% *元素个数(2):随机均匀地逐个删除元素,直至列表中元素个数最多为90% *元素个数,即:

代码语言:javascript
复制
while (the current number of elements is bigger than 90% * totul number of elements)
            randomly and uniformly generate an element from the current list and remove it.

以上是正确的吗?这听起来是不是更像没有替换的东西?或者有没有什么内置的python函数可以使用。其次,通过这个链接,Very fast sampling from a set with fixed number of elements in python我得到了一个想法,即从python中删除列表中的元素是代价高昂的。那么,有没有更好的方法来解决这个问题呢?非常感谢。

EN

回答 2

Stack Overflow用户

发布于 2015-03-11 06:48:51

看起来random.sample是个不错的选择。

代码语言:javascript
复制
n_elements = int(len(elements) * 0.9)
randomly_selected = random.sample(elements, n_elements)

这可以通过创建一个新的列表来解决“从python中的列表中删除元素代价很高”的问题。

票数 2
EN

Stack Overflow用户

发布于 2015-03-11 07:09:13

我这样做的方法是:获取列表的90%有多大,对列表进行random.shuffle,然后通过n从头开始重新分配列表(列表的90%)。

代码语言:javascript
复制
n = int(len(elements) * 0.9)
random.shuffle(elements)
elements = elements[:n]
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28975484

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档