从列表中随机select50个项目写入文件

到目前为止,我已经想出了如何导入文件,创build新文件,并随机化列表。

我无法从列表中随意select50个项目来写入文件?

def randomizer(input,output1='random_1.txt',output2='random_2.txt',output3='random_3.txt',output4='random_total.txt'): #Input file query=open(input,'r').read().split() dir,file=os.path.split(input) temp1 = os.path.join(dir,output1) temp2 = os.path.join(dir,output2) temp3 = os.path.join(dir,output3) temp4 = os.path.join(dir,output4) out_file4=open(temp4,'w') random.shuffle(query) for item in query: out_file4.write(item+'\n') 

所以如果总的随机文件是

 example: random_total = ['9','2','3','1','5','6','8','7','0','4'] 

我想要3个文件(out_file1 | 2 | 3),第一个随机集合为3,第二个随机集合为3,第三个随机集合为3(对于这个例子,但是我想创build的应该有50个)

 random_1 = ['9','2','3'] random_2 = ['1','5','6'] random_3 = ['8','7','0'] 

所以最后的'4'将不会包括在内。

我如何从我随机select的列表中select50个?

更好的是,我怎样才能从原始列表中随机select50个?

如果这个列表是随机排列的,那么你可以拿第一个50。

否则,使用

 random.sample(the_list, 50) 

random.sample帮助文本:

 sample(self, population, k) method of random.Random instance Chooses k unique random elements from a population sequence. Returns a new list containing elements from the population while leaving the original population unchanged. The resulting list is in selection order so that all sub-slices will also be valid random samples. This allows raffle winners (the sample) to be partitioned into grand prize and second place winners (the subslices). Members of the population need not be hashable or unique. If the population contains repeats, then each occurrence is a possible selection in the sample. To choose a sample in a range of integers, use xrange as an argument. This is especially fast and space efficient for sampling from a large population: sample(xrange(10000000), 60) 

我认为random.choice()是一个更好的select。

 from numpy import random mylist = [13,23,14,52,6,23] random.choice(mylist,3) 

该函数返回从列表中随机select3个值的数组

select随机项目的一个简单方法是随机切换。

 import random a = [1,2,3,4,5,6,7,8,9] random.shuffle(a) print a[:4] # prints 4 random variables