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

これを行う 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 に答える
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 に答える
0

サンプルをセットに入れ、1 から最大母集団値まで反復し、封じ込めテストを使用して、現在の反復がセット内にあるかどうかを確認します。

于 2012-02-28T15:28:51.993 に答える