如何删除列表中的随机项以使列表保持一定的长度?

zfz*_*zfz 3 python random algorithm list

我使用pymongo转储MongoDB中的集合列表.列表的长度大于10000,大约12000或更长(列表的长度不是一定的数字).

但是,我只需要10000个列表实例.我知道列表'l'能够切换l[:10000]l[len(l)-10000:].但我认为删除列表中项目的随机方法可能更好.

所以我想知道如何删除列表中的随机项以使其长度减少到10000长?谢谢.

Ash*_*ary 6

首先对列表进行洗牌,然后将其切片:

from random import shuffle
random.shuffle(your_lis)
your_lis = your_lis[:10000]
Run Code Online (Sandbox Code Playgroud)

如果订单有问题:

from random import randrange
diff = len(your_lis) - 10000
for _ in xrange(diff):
    ind = randrange(len(your_lis))
    your_lis.pop(ind)  #a quick timing check suggests that `pop` is faster than `del`
Run Code Online (Sandbox Code Playgroud)