私はあなたが何を求めているのか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) に対してこれを実行しようとしています。整数をシャッフルする方法がわかりません。ただし、ランダムに 1 つ削除できます。リストを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 ファイルに 2 回書き込まれ、1 要素が 1 回書き込まれ、その要素はランダムに選択されました。
n = 5 の場合、txt ファイルは次のようになります。
0
2
3
4
0
1
2
3
4
上記の場合、1 は 1 回だけ表示され、1 つおきの数字は 2 回表示されます。