Je suis un nouveau membre de cette communauté et un nouvel utilisateur de Python.combiner des éléments de la matrice en groupes de 4 sans répétition
Je suis confrontée à un petit problème, tant au niveau conceptuel qu'au niveau du codage. C'est le suivant:
J'ai 11 groupes des 8 éléments identiques (dans la vraie vie ils sont 2 tampons de coton coupés en 4 morceaux chacun, pour un nombre total de 8 morceaux, multiplié par 11 donneurs - c'est un corps étude de la collecte des odeurs), à savoir:
AAAAAAAA BBBBBBBB CCCCCCCC ... MMMMMMMM
Je dois maintenant former un tampon supra-donneur en combinant 4 pièces différentes donateurs, par exemple ABCD, ABCE, CDEF etc ... Les nouveaux groupes de 4 éléments ne doivent pas contenir de pièces provenant du même donneur (par exemple, AABC ou ABDD ne sont pas autorisés) et bien sûr si une pièce est utilisée, alors elle ne peut pas être utilisée pour former un autre tampon supra-donneur. Je voulais coder quelque chose qui permettait la formation automatique des groupes, sans me casser la tête pour le faire manuellement, risquant de perdre le compte.
Est-ce un cas de combinaisons sans répétitions? Je pensais à faire quelque chose comme: créer une matrice comme celle ci-dessus, créer 20 (le nombre de blocs supra-donneur dont j'ai besoin) 4-éléments vides groupes (listes?) Puis une boucle dans laquelle je dis de choisir au hasard l'élément Cij de la matrice et déplacez-le dans la liste vide, puis passez à l'élément suivant à sélectionner, mais assurez-vous qu'il s'agit d'un type différent et d'un élément qui n'a pas été sélectionné dans un groupe précédent (par ex. élément C43, alors ce même élément ne devrait pas être utilisé dans un autre groupe). Faites-le jusqu'à ce que le groupe de 4 éléments soit complet, puis passez au groupe de 4 éléments suivant.
Je demande de l'aide parce que j'ai peu de temps pour le faire, sinon j'essaierais d'apprendre en faisant beaucoup d'erreurs. Une suggestion?
EDIT: exemple d'une table avec les groupes 4-éléments déjà créés et le nombre de pièces huitième partie utilisée pour les différents éléments utilisés (certains d'entre eux sera à l'avance, bien sûr)
Merci d'avance à tous ceux qui veulent donner leur avis!
Je pense que les builtins itertools pourraient être assez –
Salut @JackEvans, merci pour la réponse rapide. J'ai joint une image des résultats finaux, si cela peut répondre à votre question.merci encore –
Avez-vous des exigences de choisir à peu près autant de chaque groupe? – JohanL