Je veux utiliser Itertools permutations pour les chaînes au lieu de seulement des lettres.Python Itertools permutations avec des chaînes
import itertools
lst = list(permutations(("red","blue"),3))
#This returns []
Je sais que je peux faire quelque chose comme:
a = list(permutations(range(3),3))
for i in range(len(a)):
a[i] = list(map(lambda x: 'red' if x==0 else 'blue' if x==1 else 'green',a[i]))
EDIT: Je veux clé dans ce que mon entrée, et obtenir ce que ma sortie
input: ("red","red","blue")
output:
[(’red’, ’red’, ’red’), (’red’, ’red’, ’blue’),\
(’red’, ’blue’, ’red’), (’red’, ’blue’, ’blue’), (’blue’, ’red’, ’red’), \
(’blue’, ’red’, ’blue’), (’blue’, ’blue’, ’red’), (’blue’, ’blue’, ’blue’)]
quel est votre résultat attendu? votre idée originale me semble correcte, la raison pour laquelle elle renvoie '[]' est parce que vous demandez des permutations de longueur-3 dans une liste de longueur-2 - il n'y en a pas! – maxymoo
Cela fonctionne parfaitement pour permuter les chaînes. Cependant, vous ne pouvez pas prendre trois éléments dans une liste de deux, dans n'importe quel ordre. C'est pourquoi vous obtenez la liste vide en sortie. – JohanL
ressemble à ce que vous voulez [produit] (https://docs.python.org/3/library/itertools.html#itertools.product) – Copperfield