Je suis juste en train de jouer avec une simulation de (Mendel's First Law of Inheritance). Avant que je puisse laisser les créatures s'accoupler et analyser le résultat, la population doit être générée, c'est-à-dire qu'une liste doit être remplie avec un nombre variable de trois types différents de tuples sans les déballer.Remplir la liste avec des tuples
Tout en essayant de se familiariser avec itertools (je aurai besoin des combinaisons plus tard dans la partie d'accouplement), je suis venu avec la solution suivante:
import itertools
k = 2
m = 3
n = 4
hd = ('A', 'A') # homozygous dominant
het = ('A', 'a') # heterozygous
hr = ('a', 'a') # homozygous recessive
fhd = itertools.repeat(hd, k)
fhet = itertools.repeat(het, m)
fhr = itertools.repeat(hr, n)
population = [x for x in fhd] + [x for x in fhet] + [x for x in fhr]
qui se traduirait par:
[('A', 'A'), ('A', 'A'), ('A', 'a'), ('A', 'a'), ('A', 'a'), ('A', 'a'), ('A', 'a'), ('A', 'a'), ('A', 'a')]
Existe-t-il un moyen plus raisonnable, pythonique ou permettant de gagner de la mémoire pour construire la liste finale, par ex. sans générer les listes de pour les trois types d'individus en premier?
Quelle est la sortie que vous espérez exactement? – cdhagmann
@cdhagmann Edited question, la sortie attendue est maintenant incluse –