Maison  >  Article  >  développement back-end  >  Compréhension approfondie du module itertools en Python

Compréhension approfondie du module itertools en Python

coldplay.xixi
coldplay.xixiavant
2020-11-12 17:32:171799parcourir

La colonne

Tutoriel vidéo Python présente le module itertools.

Compréhension approfondie du module itertools en Python

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.

produit

É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)复制代码

permutations

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 A3 3=6A_3^3=6situation.

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')复制代码

combinaisons

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

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')]复制代码

accumuler

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]复制代码

compresser

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

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 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]复制代码

cycle

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer