Comprendre et Utiliser IterTools en Python

Itertools : Combinaisons, permutation et produit cartésien
Vidéo non disponible ! Réessayez plus tard
Cette vidéo fait partie de la formation
Maîtriser Python
Revoir le teaser Je m'abonne
5,0
Transcription


99,00€ Je commande

Formation incluse dans l'abonnement Elephorm Je m'abonne à Elephorm

DescriptionProgrammeAvis
5,0

99,00€ Je commande

Formation incluse dans l'abonnement Elephorm Je m'abonne à Elephorm

Apprendre à utiliser les fonctions combinaisons, permutations et produits cartésiens de la bibliothèque IterTools. Simplifier le code Python en évitant les boucles imbriquées multiples.

Découvrez comment utiliser IterTools pour manipuler des itérables en Python avec des combinaisons, des permutations et des produits cartésiens.

Dans cette vidéo, nous explorons les puissantes fonctions offertes par la bibliothèque IterTools en Python pour générer des combinaisons, des permutations et des produits cartésiens à partir d'itérables. IterTools.combination vous permet de créer des combinaisons de n éléments à partir d'un itérable, sans prendre en compte les positions des éléments. Pour un cas où la position des éléments est importante, les permutations doivent être utilisées. Les produits cartésiens, quant à eux, sont utiles pour éviter les boucles imbriquées. Par exemple, réaliser une double boucle imbriquée peut être simplifié en une seule ligne avec itertools.product, rendant le code plus efficace et lisible. Grâce à ces techniques avancées, vous pouvez optimiser vos scripts Python et gagner en performance.

Voir plus
Questions réponses
Qu'est-ce qu'une combinaison en IterTools?
Une combinaison en IterTools est un ensemble de n éléments tirés d'un itérable, où l'ordre des éléments n'a pas d'importance.
Comment utiliser itertools.product pour éviter les boucles imbriquées?
Vous pouvez utiliser itertools.product(itr1, itr2) pour obtenir le produit cartésien d'itérables itr1 et itr2, simplifiant ainsi le code en une seule ligne.
Quelle est la différence entre combinaisons et permutations en IterTools?
La différence réside dans le fait que les permutations prennent en compte la position des éléments alors que les combinaisons ne le font pas.

Programme détaillé

2 commentaires
5,0
2 votes
5
4
3
2
1
michelkreutner
Il y a 11 months
Commentaire
Les explications sont claires et concises. Ce cours sur l'utilisation avancée de Python est tres intéressant. Il vous apportera des connaissances que vous pourrez ensuite approfondir.
Je suis vraiment tres satisfait par cette première formation suivie sur Python.
yvan.vogel
Il y a 2 years
Commentaire
Hello, sur la video autour de asyncio, vous utilisez python 2.7.12. J'utilise python 3.10, aussi je souhaite faire partager mon code (qui fonctionne) selon ma vision et compréhension sur le sujet d'étude que vous avez proposé. Yvan Vogel.

#CODE en python 3.10.0 64 bits (VScode 1.62.3)
import datetime
import asyncio
import aiohttp
import requests


# ----------------------------------------------------------------------------------------------------------------------------
def req_bloquante(num):
print(f"Get {num}")
uid = requests.get("https://httpbin.org/uuid").json()["uuid"]
print(f"Res {num}: {uid}")


def faire_toutes_les_requetes():
for x in range(51):
req_bloquante(x)


print("=====> ### Bloquant : ")
start = datetime.datetime.now()
faire_toutes_les_requetes()
exec_time = (datetime.datetime.now() - start).seconds
print(f"Downloading all take {exec_time} seconds\n")

# ----------------------------------------------------------------------------------------------------------------------------


async def requeteSansBloquer(semaphore, num, session):
print(f"Get {num}")
# await semaphore.acquire() # putting this await semaphore commande the Res is ordering but process very slow ~60 sec
async with session.get("https://httpbin.org/uuid") as response:
uid = (await response.json())["uuid"]
# await asyncio.sleep(delay=3) #delay = number of seconds
# semaphore.release()
print(f"Res {num}: {uid}")
# return uid # ?


async def main():
semaphore = asyncio.Semaphore(value=1)
tasks = []
async with aiohttp.ClientSession(
loop=loop, connector=aiohttp.TCPConnector(ssl=False)
) as session:
for x in range(51):
tasks.append(requeteSansBloquer(semaphore, x, session))
await asyncio.gather(*tasks)
print("This is after the loop...")


if __name__ == "__main__":
print("=====> ### Non Bloquant : ")
start = datetime.datetime.now()
loop = asyncio.get_event_loop()
loop.run_until_complete(main())
exec_time = (datetime.datetime.now() - start).microseconds
print(f"Downloading all take {exec_time} micro seconds\n")