我有一个30 n随机样本来自列表,我写入文件。
我更愿意通过写入“in_sample”或“not_in_sample”来标记去往样本的行。
现在看起来像这样:
mysample=random.sample(list, 30)
for i in mysample:
out.write("%s\n" % (i))
我只写出样本中的行,但我希望文件看起来像这样:
line 1 in_sample
line 2 not_in_sample
line 3 in_sample
line 4 not_in_sample
该文件之前看起来相同但没有最后一列。
我清楚了吗?
答案 0 :(得分:1)
my_sample = set(random.sample(my_list, 30))
for i, item in enumerate(my_list, 1):
out.write('line {0} {1}\n'.format(i, ('not_in_sample', 'in_sample')[item in my_sample]))
答案 1 :(得分:1)
mysample=random.sample(list, 30)
for i in range(1:31)
if i in mysample:
out.write("line %s\n in_sample" % (i))
else:
out.write("line %s\n not_in_sample" % (i))
答案 2 :(得分:1)
这样做的一种方法是对您的列表索引进行采样而不是其内容。
例如,如果您的列表名为lst
:
indexes_samples = sorted(random.sample(range(len(lst)), 30))
for i in indexes_samples:
lst[i] # do what you want
或许我认为您可能想要做类似的事情:
idx = sorted(random.sample(range(len(lst)), 30))
j = 0
for i,num in enumerate(lst):
if j <= len(idx) and i == idx[j]:
msg = 'line {} in sample'
j += 1
else:
msg = 'line {} not in sample'
print(msg.format(num)) # out.write() or whatever
答案 3 :(得分:0)
将样本放入集合中,从1迭代到最大总体值,并使用包含测试来查看当前迭代是否在集合中。