Voici les sorties de code:Comment utiliser itertools pour un produit utilisant une valeur d'index spécifique?
import itertools as it
list(it.product(['A', 'T'], ['T', 'G']))
Out[230]: [('A', 'T'), ('A', 'G'), ('T', 'T'), ('T', 'G')]
Mais, si la liste est la suivante:
['A', '/', 'T'], ['T', '/', 'G']
['C', '|', 'T'], ['A', '|', 'C']
Je veux
[('A', 'T'), ('A', 'G'), ('T', 'T'), ('T', 'G')]
[('C', 'A'), ('T', 'C')]
qui signifie:
list(it.product(['A', '/', 'T'], ['T', '/', 'G'])) if '/' in the list
else list(it.product(['A', '/', 'T'], ['T', '/', 'G'])) if '|' in the list
Comment puis-je ge t le même résultat sans enlever /
et |
parce que c'est une condition.
Je pense en utilisant l'indice pourrait fonctionner et a essayé quelque chose comme:
list(it.product(['A', '/', 'T'], ['T', '/', 'G']).index([0,2))
et plusieurs autres processus, mais n'a pas aidé.
Ce code est la queue d'un gros code, donc je n'essaie pas de créer une fonction ou de supprimer /
.
Je mis à jour l'état un peu. Pouvez-vous s'il vous plaît regarder le problème à nouveau. – everestial007
Pourriez-vous préciser quelles sont les conditions réelles? J'ai eu l'impression de comprendre ce que vous vouliez dire - mais vu votre nouvel exemple ('['C', '|', 'T'], ['A', '|', 'C']'): quels sont les règles là-bas? – MSeifert
s'il y a '|' dans la liste, créez uniquement le produit des valeurs du même niveau d'index. ** c'est-à-dire ** '0 avec 0 et 2 avec 2 - ce qui me donne ['C', 'A'], ['T', 'C']' – everestial007