Maison  >  Article  >  développement back-end  >  Comment associer des éléments de listes courtes et longues à l’aide de permutations ?

Comment associer des éléments de listes courtes et longues à l’aide de permutations ?

DDD
DDDoriginal
2024-10-29 01:47:02528parcourir

How to Pair Elements from Short and Long Lists Using Permutations?

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn