この関数は、ウイルスが死ぬ可能性を表す[ATCG、GTAC .....]やmortalityProb(0〜1の間の浮動小数点数) /リストから削除する。残りのウィルスで新しいリストを返すべきです。それぞれのウイルスは死亡する可能性があるため、死亡率が0.6となると、残りのウイルスの約60%が残っているはずです。ランダムに生成された番号に応じてリストから要素を削除する
これは、リスト内包表記を使用して2行(def kill(viruses、mortalityProb):)と私のコード行で行うことができます。
def kill(viruses, mortalityProb):
for i in viruses:
if random.randint(0, 100) < (mortalityProb * 100):
del i
return viruses
これはうまくいきませんが、理由はわかりません。これを行うには
「del i」は「i変数」の割り当てを解除することを意味します。それ以上のことはしません。どのリストからもオブジェクトは削除されません。 – user2357112
これを行う1つの方法は 'viruses.remove(i)'です。しかし、それを反復している間にリストを変更する際のさまざまな投稿を見てください。 – Prune
@プルーンは、美しい答えを与えましたが、あなたの頭の中に、1ライナーを書くことはpythonic *方法ではなく、読みやすいコードを書くことがベストプラクティスです!しかし、@ Pruneの答えはまだ読み込み可能ですが、 'import random'の代わりに' random import'をインポートすることもできますが、 'random.random()'の代わりに 'random()'を使ってスペースを節約することができます赤字性を高めます。 – Lycopersicum