Lorsqu'il s'agit d'itérateurs et d'itérables, il est crucial de comprendre leur nature de consommation. En Python, un itérateur ne peut être consommé qu'une seule fois. Cela signifie qu'une fois que vous parcourez un itérateur, celui-ci est épuisé et ne peut plus être utilisé.
Considérez le code suivant :
def test(data): for row in data: print("first loop") for row in data: print("second loop")
Si les données sont un itérateur non vide (par exemple, un itérateur de liste ou expression génératrice), le code imprimera la « première boucle » plusieurs fois, mais la « deuxième boucle » ne sera jamais imprimée. En effet, l'itérateur a été consommé lors de la première boucle.
Le même problème se pose avec d'autres formes d'itération, telles que les compréhensions list/set/dict, les appels à list(), sum() ou réduire (), et ainsi de suite.
Cependant, si les données sont un autre itérable tel qu'une liste ou une plage (qui sont des séquences), les deux boucles s'exécuteront comme prévu, en imprimant "première boucle" et "seconde boucle" pour chaque élément. En effet, ces itérables peuvent être itérés plusieurs fois.
Pour réitérer, lorsque vous utilisez des itérateurs, il est important de se rappeler leur nature à consommation unique. Pour réutiliser les données, pensez à enregistrer les éléments dans une liste ou à utiliser itertools.tee() pour créer des itérateurs indépendants.
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!