我不确定我是否 100 确定你在追求什么,但这里是一个尝试:
import random as rn
x = range(3)*2 #generate a list where each number appears twice
rn.shuffle(x) #shuffle it
x.pop() #remove one number
结果:
>>> x
[2, 0, 2, 1, 0] #the result is a list where every number appears twice, except for
#one number which was removed at random, also the numbers are
#randomly arranged
编辑:
这是对非常大的 n 执行此操作的尝试(该大小的列表无法存储在您的 ram 中的 n)。我看不到如何洗牌整数。但是,我可以随机删除一个。假设您要将列表写入 txt 文件。
drop = rn.range(0,n) #choose a random integer to drop
with open('my_file.txt','w') as f:
for ind,ele in enumerate(xrange(n)):
if ind == drop: #do not write the element to txt file
pass
else:
f.write(str(ele) + '\n') #write every except for one element to txt file
with open('my_file.txt','a') as f:
for ele in xrange(n):
f.write(str(ele) + '\n') # write every element to txt file
最后,我们将 n-1 个元素写入 txt 文件两次,一次写入 1 个元素,该元素是随机选择的。
对于 n = 5,txt 文件如下所示:
0
2
3
4
0
1
2
3
4
在上述情况下,1 只出现一次,每隔一个数字出现两次。