1

引数として数値を取る関数があります。この関数は、既存のリスト (100 個の要素) のコピーを作成し、ランダムに選択されたリスト内の値を操作することになっています。たとえば、関数に200の引数を与えると、新しいリストを作成し、毎回ランダムに値を選択する必要があり、200回で新しいリストを作成し、元の既存のリストの各要素が100 個の要素が少なくとも 1 回操作されます。このデータは後でグラフ化されます。私が書いた関数がすべての要素を操作していないことに気づき続けています。私のコードは次のとおりです。

def condition_manipulate(value):
    list_set=[]
    for i in range(0,value):
        new_list=initial_conditions[:]
        x=random.choice(new_list)
        variable=new_sum(new_list.index(x))             #new_sum is a pre-defined function
        new_list[new_list.index(x)]=variable
        list_set.append(new_list)
    return list_set

問題は、私が random.choice を選択したことである可能性があります。これにより、initial_conditions のすべての要素に対して condition_manipulate が少なくとも 1 回は実行されませんが、これを修正するにはどうすればよいでしょうか?

編集: データをグラフ化したところ、new_list の同じ値で実行され続けていることに気付きました...他の値を選択していません!

4

2 に答える 2

1

new_list[new_list.index(x)]=variableあなたの問題は、リストの最初に割り当てられている可能性がありますがx、これは必ずしも選択されたものではありませんx。試す:

import random

def condition_manipulate(value):
    list_set=[]
    for i in range(value):
        new_list=initial_conditions[:]
        i=random.choice(range(len(initial_conditions)))
        new_list[i]=new_sum(new_list[i])
        list_set.append(new_list)
    return list_set

ランダム性は別として、インデックスを操作することは、常にリスト全体を検索するよりも効率的ですx

于 2013-07-04T18:33:33.137 に答える