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

2024-06-28 11:32:46 发布

您现在位置:Python中文网/ 问答频道 /正文

这个问题有两个方面。首先,据我所知,从一个给定的列表中统一删除10%的想法如下所示。 (1) :计算10%*元素总数 (2) :随机、均匀地逐个删除元素,直到列表中的元素数最多为元素总数的90%*为止 一、 e

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中从列表中删除元素是非常昂贵的。那么,有没有更好的方法来解决这个问题呢?非常感谢。在


Tags: andofthefrom元素number列表is
2条回答

似乎random.sample将是一个好办法。。。在

n_elements = int(len(elements) * 0.9)
randomly_selected = random.sample(elements, n_elements)

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

我通过获取列表的90%有多大,random.shuffle对列表进行赋值,然后从一开始到n(列表的90%)重新分配该列表。在

n = int(len(elements) * 0.9)
random.shuffle(elements)
elements = elements[:n]

相关问题 更多 >