Compréhension approfondie du module itertools en Python

coldplay.xixi
Libérer: 2020-11-12 17:32:17
avant
1785 Les gens l'ont consulté

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)复制代码
Copier après la connexion

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')]复制代码
Copier après la connexion

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')复制代码
Copier après la connexion

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')]复制代码
Copier après la connexion

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')]复制代码
Copier après la connexion

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]复制代码
Copier après la connexion

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   
复制代码
Copier après la connexion

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复制代码
Copier après la connexion

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  
复制代码
Copier après la connexion

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]复制代码
Copier après la connexion

cycle

import itertools
cycle = itertools.cycle([1, 2, 3])
for c in cycle:
   print(c)复制代码
Copier après la connexion

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!

Étiquettes associées:
source:juejin.im
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!