刚开始做这个的时候觉得很容易,但是当随机把数据抽取出来之后,还需要按顺序放回新的列表这一点就比较难了。
最开始想的是生成一个index的列表,每次随机抽一个index,然后取出的就是list[index]这个元素,然后再按index这个数将其放回新的列表中,本以为这样就万无一失了实际上是我想多了hhhhh,这样生成的新的列表元素顺序并不是按照在原有列表的顺序来排的,思前想后想了半天,用这个方法来解决了,可能不够好,还有些浪费资源,但是目前我所能想到的就是这么多,并且我处理的数据也不多,感觉这个方法完全够用了。
基于我没有在网上看到一些比较合适的方法,因此把自己的方法贴出来,欢迎指正。
import random
list = ['a', 'b', 'c', 'd', 'e', 'f']
list1 = ['']*len(list)
index = [i for i in range(len(list))]
while len([i for i in list1 if i != '']) < 3:
k = random.choice(index)
list1[k] = list[k]
index.remove(k)
if len(index) == 0:
break
while '' in list1:
list1.remove('')
print(list1)
主旨思想是先生成一个和原列表一样长的空列表,
生成空列表的想法是参考random库中的sample函数源码来的。
然后将原列表中的元素抽出来按原有顺序放入新的列表,最后如果有空元素存在的话,删除。
大概就是这么一个办法,不过我始终觉得这办法还是太笨。但是emmmm能用就行了hhh