Maison > Article > développement back-end > Compréhension approfondie du module itertools en Python
La colonne
Il existe un puissant package d'outils d'itération itertools en Python, qui est l'un des packages d'outils standard fournis avec Python.
Étant donné qu'itertools est une bibliothèque intégrée, aucune installation n'est requise, juste import itertools
.
le produit est utilisé pour trouver le produit cartésien de plusieurs objets itérables (Cartesian Product)
, ce qui équivaut à une boucle for imbriquée, c'est-à-dire :
Le produit cartésien fait référence en mathématiques, au cartésien. Le produit de deux ensembles X et Y, également appelé produit direct, est exprimé par X × Y
.
product(A, B)
La même chose que ``((x,y) pour x dans A pour y dans B)`.
import itertools for item in itertools.product([1,2,3],[100,200]): print(item) # 输出如下 (1, 100) (1, 200) (2, 100) (2, 200) (3, 100) (3, 200)复制代码
En termes simples, les permutations are Renvoie la disposition mathématique ou des caractères complète d'un itérable.
Permutation complète, c'est-à-dire toutes les permutations qui produisent un nombre spécifié d'éléments (l'ordre est lié), qui est le A
dans la combinaison de permutations du lycée.
permutations Il accepte un objet de collection puis produit une séquence de tuples.
Par exemple, print(list(itertools.permutations('abc',3)))
, il y a situation.
items = ['a','b','c'] from itertools import permutations for i in permutations(items): print(i) #排列组合 print(list(itertools.permutations('abc',3))) # 输出如下 ('a', 'b', 'c') ('a', 'c', 'b') ('b', 'a', 'c') ('b', 'c', 'a') ('c', 'a', 'b') ('c', 'b', 'a') [('a', 'b', 'c'), ('a', 'c', 'b'), ('b', 'a', 'c'), ('b', 'c', 'a'), ('c', 'a', 'b'), ('c', 'b', 'a')]复制代码
Si toutes les permutations d'une longueur spécifiée sont requises, un paramètre de longueur facultatif r
peut être transmis.
items = ['a','b','c'] from itertools import permutations for i in permutations(items,2): print(i) #排列组合 # 输出如下 ('a', 'b') ('a', 'c') ('b', 'a') ('b', 'c') ('c', 'a') ('c', 'b')复制代码
Trouver toutes les combinaisons non répétitives du nombre spécifié d'éléments dans une liste ou un générateur La différence entre
itertools.permutations(iter,r)
et itertools.combinations(iter,r)
est : le premier est permutations
Permet la réutilisation, le second combinations
ne peut pas être réutilisé
>>> print(list(itertools.combinations('abc',3))) [('a', 'b', 'c')]复制代码
combinations_with_replacement
et combinations
sont très similaires, la seule différence est que le premier combinations_with_replacement
dans le type de collection Les données peuvent être répétées
>>> print(list(itertools.combinations_with_replacement('abc',3))) [('a', 'a', 'a'), ('a', 'a', 'b'), ('a', 'a', 'c'), ('a', 'b', 'b'), ('a', 'b', 'c'), ('a', 'c', 'c'), ('b', 'b', 'b'), ('b', 'b', 'c'), ('b', 'c', 'c'), ('c', 'c', 'c')]复制代码
accumulate
sert à accumuler les éléments de la liste un par un
>>> import itertools >>> x = itertools.accumulate(range(10)) >>> print(list(x)) [0, 1, 3, 6, 10, 15, 21, 28, 36, 45]复制代码
compress()
est un outil de filtrage, qui accepte un objet itérable et une séquence de sélection booléenne en entrée, et génère tous les objets itérables qui sont vrais dans la séquence booléenne.
import itertools its=["a","b","c","d","e","f","g","h"] selector=[True,False,1,0,3,False,-2,"y"] for item in itertools.compress(its,selector): print (item) a c e g h 复制代码
count(初值=0, 步长=1)
est Créer un itérateur avec des valeurs régulièrement espacées à partir du paramètre de départ transmis.
Regardons un exemple simple
from itertools import count for i in count(10): #从10开始无限循环 if i > 20: break else: print(i) 10 11 12 13 14 15 16 17 18 19 20复制代码
chain chain est principalement utilisé pour connecter plusieurs séquences ensemble pour une itération.
import itertools chain = itertools.chain([1, 2, 3], [4, 5, 6]) for c in chain: print(c) 1 2 3 4 5 6 复制代码
Une autre fonction très importante de la chaîne est d'aplatir la liste.
>>> list(itertools.chain([1, 2, 3], [4, 5], [6] ,[7,8])) [1, 2, 3, 4, 5, 6, 7, 8]复制代码
import itertools cycle = itertools.cycle([1, 2, 3]) for c in cycle: print(c)复制代码
Le résultat de l'opération est 1 2 3 1 2 3... Il continue de tourner en rond, sans jamais s'arrêter.
Recommandations d'apprentissage gratuites associées : Tutoriel vidéo Python
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!