CATALOGUE Code & Data Formation Python Maîtriser Python - Techniques avancées Apprenez à utiliser Repeat et Cycle avec IterTools en Python

Apprenez à utiliser Repeat et Cycle avec IterTools en Python

Itertools : Eviter le piège de l'initialisation
Vidéo non disponible ! Réessayez plus tard
Cette vidéo fait partie de la formation
Maîtriser Python - Techniques avancées
Revoir le teaser Je m'abonne
5,0
Transcription

Cette leçon fait partie de la formation
99,00€ Je commande

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

DescriptionProgrammeAvis
5,0
Cette leçon fait partie de la formation
99,00€ Je commande

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

Les objectifs de cette vidéo sont :


- Comprendre comment utiliser les fonctions Repeat et Cycle du module IterTools.


- Apprendre à éviter les pièges courants liés aux références multiples d'objets mutables.


- Savoir initialiser efficacement des listes et des tuples en Python.

Découvrez comment utiliser les fonctions Repeat et Cycle du module IterTools pour initialiser efficacement vos listes en Python.

Dans cette leçon, nous explorons les fonctions Repeat et Cycle du module IterTools en Python. Ces fonctions sont extrêmement utiles pour initialiser des listes ou des tuples avec des éléments répétés, ce qui peut simplifier votre code et éviter certains pièges classiques :


- Repeat : Cette fonction permet de répéter un élément un certain nombre de fois. Par exemple, vous pouvez facilement créer une liste contenant dix fois la même valeur.


- Cycle : Cette fonction permet de créer un itérateur qui parcourt en boucle une séquence donnée, utile pour des opérations répétitives sur des séquences de données.


Un point crucial à noter est l'utilisation correcte de Repeat pour éviter les références multiples à un même objet mutable, tel qu'un dictionnaire, afin d'éviter des effets de bord indésirables. La fonction Repeat garantit que chaque élément de la liste est une nouvelle instance, plutôt qu'une référence à la même instance.

Voir plus
Questions réponses
Quelle est l'utilité principale de la fonction Repeat dans le module IterTools?
La fonction Repeat permet de répéter un élément un certain nombre de fois, utile pour initialiser des listes avec des valeurs identiques.
Pourquoi est-il important d'utiliser Repeat avec des objets mutables comme les dictionnaires?
Il est important d'utiliser Repeat pour éviter d'avoir plusieurs références à un même dictionnaire mutable, ce qui peut causer des effets de bord non désirés.
Comment la fonction Cycle diffère-t-elle de Repeat dans le module IterTools?
La fonction Cycle crée un itérateur qui parcourt en boucle une séquence donnée, contrairement à Repeat qui répète un seul élément un nombre fixe de fois.

Programme détaillé

3 commentaires
5,0
3 votes
5
4
3
2
1
xavier.leleu
Il y a 2 mois
Bonjour,
Les thèmes variés agrémentés d'exemples simples et clairs enrichissent toutes les notions exposées de façon particulièrement pédagogique. 👍
L'approche didactique m'a permis de beaucoup mieux comprendre tout un tas de concepts plus ou moins bien assimilés auparavant avec une vue d'ensemble nettement plus limpide aujourd'hui. 🤓
Merci pour cette belle prestation. 🙏
michelkreutner
Il y a 1 an
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 3 ans
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")