所以基本上我有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)
答案 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