J'ai un pour générer toutes les combinaisons possibles d'un tuple de tuplesGénérer toutes les combinaisons de 2 caractères possibles d'une chaîne de 8 caractères potentiels?
((base1 , position1) , (base2 , position2))
Le bases = ["U", "C", "A", "G"]
et le positions = [0,1,2,3,4,5,6,7,8]
.
Exigences
- ne répète
- les bases peuvent être les mêmes, mais les positions doivent être différents
- l'ordre doit être maintenu.
Par exemple:
((A,1), (B,2)) == ((B,2) , (A,1))
et ((A,1), (B,1))
devrait être mis au rebut.
sortie de l'échantillon:
[ ((U,0) , (U,1)), ((U,0) , (U,2)), ((U,0) , (U,3)) ...]
devrait avoir une longueur de 448
Exemple:
Pour une longueur de chaîne de 2:
((U,0),(U,1))
((U,0),(C,1))
((U,0),(A,1))
((U,0),(G,1))
((C,0),(U,1))
((C,0),(C,1))
((C,0),(A,1))
((C,0),(G,1))
((A,0),(U,1))
((A,0),(C,1))
((A,0),(A,1))
((A,0),(G,1))
((G,0),(U,1))
((G,0),(C,1))
((G,0),(A,1))
((G,0),(G,1))
aurait toutes les combinaisons ... Je pense que
J'ai ce jusqu'à
all_possible = []
nucleotides = ["U","C","A","G"]
for i in range(len(nucleotides)):
for j in range(8):
all_possible.append(((nucleotides[i],j),(nucleotides[i],j)))
Pouvez-vous clarifier le problème? À quoi la sortie ressemble-t-elle spécifiquement? Je ne suis pas certain de ce que votre exemple est même supposé illustrer. –
Je ne suis pas sûr de ce que vous demandez exactement^mais 'itertools' aura certainement quelque chose qui vous aidera avec ceci: https://docs.python.org/3/library/itertools.html – Jack
En utilisant les' bases 'et' positions' listes que vous donnez, 'len ([((b1, p1), (b2, p2)) pour (b1, b2) dans le produit (bases, bases) pour (p1, p2) dans les combinaisons (positions, 2)]) 'aboutit à 576, pas à 448. Je pense que votre liste' positions' est trop longue. – bli