わかりましたので、私は森林の成長をシミュレートするモデルに取り組んでいます。成長は複雑な関数で定義され、これは長年の森林の年齢に基づいています。森林は毎年r
年ごとに定期的に削減され、1年目に森林回復が再開されます(伐採は瞬間的であると想定されます)。それは限界を超えるまで以下のコードは1からのサイクルRに値のリストが返されr = 50
場合にモデル化された時間スケールの限界(limit
)=500
モデルは、年r
(立っ森林)整数の繰り返しセットのリストリスト生成の効率化
で始まりますその後、limit
r = 50
limit = 500
x = list(range(1,r+1)) #produces a list from 1-r
x = x*(int(limit/r)+1) #multiples the list to be bigger than limit (to capture values of r which don't divide into it evenly (no floats allowed)
x2 = [r] #adds the first value of the list (r)
x2 = x2+x #adds the multiplied list to X2
x2 = x2[0:limit] #truncates the list to (limit)
を超えた任意の値このコードは動作しますが、それは物事を行くの不必要に面倒な方法のように思えるを削除するために切り捨てられます。誰もより洗練されたソリューションを提案できますか?
私はこのコードがあなたの考えをしているとは思わない?ランニングの終わりに、あなたは500のintsのリストを持っています - 私は50の木があるという質問から考えたでしょうか?私はあなたの質問を誤解しましたか? – srattigan
はい、リストは時間の経過とともに木の年齢を与えます(1から50の間)ので、年齢に基づいて森林の量を計算するために使用できます。年齢に基づいてグラフを絶対軸で使用できます年齢はx(1〜500)です。これは理にかなっていますか? – Will
お詫び申し上げますが、私はあなたがリストを反復し、各要素の値を変更したいと考えていると解釈しました。だからあなたは[50、1、... 50、1、..... 50、1、... 50など]を望んでいますか?これが欲しい場合は、コードを数行簡略化することができますが、読みにくくなる可能性はありますが、それほど効率的ではありませんか?可読性は良いです。 – srattigan