从列表

时间:2017-07-26 03:27:14

标签: python list random

所以基本上我有10个txt文件(名为A_1,A_2 ........ A_10),我想在某种程度上从这10个文件中随机选择3个文件,当这3个文件被随机选择时,它们将从原始列表中删除,并使用随机选择的3个文件创建新列表。我尝试了以下方法,但是当我尝试命令print(文件列表)时,它仍然显示10个txt文件,任何建议或建议会非常有帮助的。

import random
filelist=[]
for i in list(range(1,11)):
    filelist.append("/Users/Hrihaan/Desktop/A_%s.txt" %i)
Newlist=random.sample(filelist,4)

2 个答案:

答案 0 :(得分:2)

如果filelist中的元素顺序对您无关紧要,您可以:

随机播放filelist获取n的第一个new_list元素,并将剩余元素重新分配给filelist

In [48]: import random as rn

In [49]: filelist = range(10)

In [50]: rn.shuffle(filelist)

In [51]: new_list = filelist[:3]

In [52]: filelist = filelist[3:]

In [53]: new_list
Out[53]: [3, 4, 5]

In [54]: filelist
Out[54]: [9, 8, 7, 6, 1, 2, 0]

答案 1 :(得分:1)

请注意,random.sample会从列表中随机抽取一些项目,但不会删除任何项目。对此的一个解决方案是pop来自filelist列表的随机索引,并将返回的值添加到列表newlist

假设你有:

import random
filelist = ['A1', 'A2', 'A3', 'A4']                                    # List containing the file names
newlist = []                                                           # Initialize a list that will contain the removed file names
for i in range(3):                                                     # We want to remove 3 files
    newlist.append(filelist.pop(random.randint(0, len(filelist) - 1))) # Pop an item out of the file list at random in the range between 0 and the length of the file list and add it to the new list