Permutations correspondantes : aligner des listes longues et courtes
Étant donné deux listes de longueurs différentes, nous visons à créer des appariements basés sur la longueur du liste plus courte. Chaque élément de la liste la plus courte doit correspondre à une permutation des éléments de la liste la plus longue.
Par exemple, avec des noms = ['a', 'b'] et des nombres = [1, 2], nous obtiendrait :
[('a', 1), ('b', 2)] [('b', 1), ('a', 2)]
Si la liste des noms est plus longue, par exemple noms = ['a', 'b', 'c'], les permutations s'étendraient pour inclure :
[('a', 1), ('b', 2)] [('b', 1), ('a', 2)] [('a', 1), ('c', 2)] [('c', 1), ('a', 2)] [('b', 1), ('c', 2)] [('c', 1), ('b', 2)]
Solution utilisant itertools.product
Une approche simple consiste à utiliser la fonction itertools.product de la bibliothèque standard Python. Il génère un produit cartésien d'itérables d'entrée, créant toutes les combinaisons possibles.
import itertools a = ["foo", "melon"] b = [True, False] c = list(itertools.product(a, b)) # Output: # [("foo", True), ("foo", False), ("melon", True), ("melon", False)]
Dans notre cas spécifique, nous pouvons utiliser itertools.product pour associer les éléments de la liste la plus courte avec les permutations de la liste la plus longue. Les permutations sont générées en répertoriant toutes les réorganisations possibles des éléments de la liste la plus longue.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!