0

我从写入文件的列表中有 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

该文件之前看起来相同,但没有最后一列。

我清楚了吗?

4

4 回答 4

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]))
于 2012-02-28T15:29:05.473 回答
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))
于 2012-02-28T15:29:57.903 回答
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
于 2012-02-28T15:31:05.273 回答
0

将您的样本放入一个集合中,从 1 迭代到您的最大总体值,并使用包含测试来查看当前迭代是否在集合中。

于 2012-02-28T15:28:51.993 回答