hab
2D 配列として機能するというリストのリストがあります。このリストのリストでは、呼び出されたクラスの要素を格納loc
しているため、numpy 配列を使用していません (数値を格納していません)。
各要素をループして、ランダムに選択された「loc」で各要素を埋めたいと思います。ただし、行の終わりに到達するたびに、プログラムは最後の行要素を取得し、その行の他のすべての要素に配置するようです。これは、リストのリストが次のようになることを意味します。
3 3 3 3 3
1 1 1 1 1
2 2 2 2 2
2 2 2 2 2
4 4 4 4 4
実際にこれらすべての数字をランダムにしたい場合(これは、それぞれの特定の特性を出力してloc
いるため、数字です)。
関連するコードは次のとおりです。
allspec=[] # a list of species
for i in range(0,initialspec):
allspec.append(species(i)) # make a new species with new index
print 'index is',allspec[i].ind, 'pref is', allspec[i].pref
hab=[[0]*xaxis]*yaxis
respect = randint(0,len(allspec)-1)
for j in range(0,yaxis):
for k in range (0,xaxis):
respect=randint(0,len(allspec)-1)
print 'new species added at ',k,j,' is ', allspec[respect].ind
hab[k][j]=loc(k,j,random.random(),allspec[respect])
print 'to confirm, this is ', hab[k][j].spec.ind
for k in range (0,xaxis):
print hab[k][j].spec.ind
printgrid(hab,xaxis,yaxis)
print 'element at 1,1', hab[1][1].spec.ind
ループ内で、作成した要素が線で希望するものであることを確認しており、print 'to confirm, this is ', hab[k][j].spec.ind
この時点では問題ありません。そのループが終了したときにのみ、行のすべての要素が同じもので埋められます。理解できない!