[Python] Affiche toutes les combinaisons d'éléments de la liste

Je veux connaître toutes les combinaisons d'éléments de la liste

Par exemple

['Apple','Orange','Grape']

De la liste des

[['Apple'], ['Orange'], ['Grape'], ['Apple', 'Orange'], ['Apple', 'Grape'], ['Orange', 'Grape'], ['Apple', 'Orange', 'Grape']]

Je veux obtenir la sortie. Certaines combinaisons ne comportent qu'un seul élément et certaines combinaisons contiennent plusieurs éléments. Je sais que c'est une liste de 2 ^ n-1 réponses, mais quand j'ai essayé de l'écrire, j'ai trébuché. Ne va-t-il pas être un nid compliqué?

J'ai trouvé une bibliothèque standard qui peut être utilisée dans de tels cas. itertools --- Fonction de génération d'itérateur pour une exécution de boucle efficace

Itérateur argument résultat
combinations() p,r Colonne Taple de longueur r, pas de duplication dans l'ordre trié

Par exemple

test.py


import itertools

lis = [1,2,3,4]
for pair in itertools.combinations(lis, 2):
	print(pair)

Si vous faites ce qui précède, vous obtiendrez les résultats suivants:

(1, 2)
(1, 3)
(1, 4)
(2, 3)
(2, 4)
(3, 4)

Pour le moment, modifiez l'argument et réessayez.

test2.py


import itertools

lis = [1,2,3,4]
for team in itertools.combinations(lis, 3):
	print(team)
(1, 2, 3)
(1, 2, 4)
(1, 3, 4)
(2, 3, 4)

Avec itertools.combinations (), vous pouvez obtenir tous les modèles de combinaison (en tapples) avec n'importe quel nombre d'éléments dans la liste ** comme ceci. ** ** Ici, si vous commencez avec 1 numéro d'élément et que vous le tournez à la longueur de la liste avec une instruction for, il semble que vous obtiendrez la réponse que vous vouliez en premier.

all_combinations.py


import itertools

lis=['Apple','Orange','Grape']
result = []
for n in range(1,len(lis)+1):
	for conb in itertools.combinations(lis, n):
	    result.append(list(conb)) #Convertir taple en type de liste
print(result)

Résultat d'exécution

[['Apple'], ['Orange'], ['Grape'], ['Apple', 'Orange'], ['Apple', 'Grape'], ['Orange', 'Grape'], ['Apple', 'Orange', 'Grape']]

Si vous utilisez itertools, il semble qu'il y aura plus de situations où vous n'aurez pas à écrire des nids, et cela peut être un élément essentiel pour les paiza et les professionnels de la compétition. Comme mentionné dans "Code lisible", je pensais que si vous prenez l'habitude de lire régulièrement la bibliothèque standard, vous serez capable d'écrire du bon code.

C'était une introduction à la bibliothèque standard que j'ai trouvée utile!

Recommended Posts

[Python] Affiche toutes les combinaisons d'éléments de la liste
[python] Vérifier les éléments de la liste tous, tous
Assurez-vous que tous les éléments de la liste sont les mêmes en Python
Obtenez le nombre d'éléments spécifiques dans la liste python
[Python] Combine tous les éléments dans un tableau
[Python] Trier la liste de pathlib.Path dans l'ordre naturel
Copiez la liste en Python
Obtenir des éléments de liste en Python
[python] Récupère la liste des classes définies dans le module
[Python] Manipulation des éléments dans la liste (tableau) [Ajouter / Supprimer]
Obtenir la taille (nombre d'éléments) de Union Find en Python
Regrouper par éléments consécutifs d'une liste en Python
Supprimer plusieurs éléments dans la liste python
À propos de la liste de base des bases de Python
En Python, les éléments de la liste sont triés et sortis sous forme d'éléments et de multiples.
Comment vérifier en Python si l'un des éléments d'une liste est dans une autre liste
Vérifiez le comportement du destroyer en Python
[Python] Réduisons le nombre d'éléments dans le résultat dans le fonctionnement de l'ensemble
Prenez la somme logique de List en Python (fonction zip)
Le résultat de l'installation de python sur Anaconda
[python] Obtenez le rang des valeurs dans la liste par ordre croissant / décroissant
Déterminer si tous les éléments de la liste sont présents dans la clé dict
Résumé des méthodes intégrées, etc. de la liste Python
À la recherche du FizzBuzz le plus rapide en Python
Obtenir la liste de codes EDINET en Python
Recevez une liste des résultats du traitement parallèle en Python avec starmap
Sortie du nombre de cœurs de processeur en Python
Faites correspondre la distribution de chaque groupe en Python
Afficher le résultat du traitement de la géométrie en Python
Calculez le nombre total de combinaisons avec python
Réécrire des éléments dans une boucle de listes (Python)
Obtenir uniquement les éléments de sous-classe dans une liste
Découvrez la fraction de la valeur saisie en python
Trouvez la solution de l'équation d'ordre n avec python
L'histoire de la lecture des données HSPICE en Python
[Note] À propos du rôle du trait de soulignement "_" en Python
Résolution d'équations de mouvement en Python (odeint)
Sortie sous la forme d'un tableau python
Rechercher par la valeur de l'instance dans la liste
Sélectionnez au hasard des éléments dans la liste (tableau) en python
Trier les éléments de la liste dans l'ordre spécifié en Python
[Python] Manipulation d'éléments dans une liste (tableau) [Trier]
Comment supprimer les éléments en double dans la liste Python 3
Liste des modules python
Liste de filtres en Python
le zen de Python
Combinaison avec duplication en Python
La chose semblable à une recherche de liste en Python
À propos de __all__ en python
traitement (python) Diagramme les coordonnées de la liste Spécifiez le nombre de fois dans draw ()
Extraire des éléments (en utilisant une liste d'index) comme NumPy d'une liste / taple Python
Comment obtenir une liste de fichiers dans le même répertoire avec python
Découvrez la bonne efficacité de calcul de la vectorisation en Python
Comment obtenir le nombre de chiffres en Python
L'histoire de FileNotFound en Python open () mode = 'w'
Apprenez le modèle de conception «Chaîne de responsabilité» en Python
Implémenter la solution de l'algèbre de Riccati en Python
Ne pas être conscient du contenu des données en python
Liste du code Python utilisé dans l'analyse de Big Data
[Python] Obtenir la liste des noms ExifTags de la bibliothèque Pillow