这个问题是双重的。首先,根据我的理解,从给定列表中统一删除10%的想法如下所示。 (1):计算10%*总数的元素 (2):逐个随机均匀地删除元素,直到列表中元素的数量最多为90%*总元素数 即,
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中删除列表中的元素代价很高。那么,有没有更好的方法来解决这个问题?非常感谢。
答案 0 :(得分:2)
似乎random.sample
将成为可行的方式......
n_elements = int(len(elements) * 0.9)
randomly_selected = random.sample(elements, n_elements)
通过创建一个新列表来解决“从python列表中删除元素代价高昂”的问题。
答案 1 :(得分:2)
我这样做是为了获得列表中90%的大小,random.shuffle
列表,然后从头开始重新分配列表n
(列表的90%)。
n = int(len(elements) * 0.9)
random.shuffle(elements)
elements = elements[:n]