从随机样本中写出

2024-04-25 23:21:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个30N的随机样本从一个列表,我写到一个文件。你知道吗

我更愿意通过在末尾写上“in\u sample”或“not\u in\u 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

该文件以前看起来相同,但没有最后一列。你知道吗

我明白了吗?你知道吗


Tags: 文件samplein标记示例列表forline
3条回答
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]))

一种方法是对列表索引进行采样,而不是对其内容进行采样。你知道吗

例如,如果您的列表名为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
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))

相关问题 更多 >