[{"data":1,"prerenderedAt":1744},["ShallowReactive",2],{"doc-\u002Fglossary\u002Fwhat-is-an-iterator-in-python":3},{"id":4,"title":5,"body":6,"description":1737,"extension":1738,"meta":1739,"navigation":131,"path":1740,"seo":1741,"stem":1742,"__hash__":1743},"content\u002Fglossary\u002Fwhat-is-an-iterator-in-python.md","What Is an Iterator in Python?",{"type":7,"value":8,"toc":1716},"minimark",[9,13,22,35,38,55,60,182,185,205,216,220,223,243,246,250,253,265,268,282,287,290,370,373,379,389,392,406,408,513,515,535,543,655,658,667,674,678,684,687,745,748,769,775,778,782,785,906,909,925,935,1034,1036,1061,1065,1068,1097,1107,1111,1114,1132,1134,1249,1251,1278,1281,1284,1377,1379,1392,1396,1399,1425,1432,1471,1474,1477,1530,1533,1611,1614,1626,1630,1635,1641,1645,1648,1658,1661,1665,1671,1675,1678,1682,1712],[10,11,5],"h1",{"id":12},"what-is-an-iterator-in-python",[14,15,16,17,21],"p",{},"An iterator in Python is an object that gives you values ",[18,19,20],"strong",{},"one at a time",".",[14,23,24,25,29,30,21],{},"It keeps track of where it is, so each time you ask for the next value, it moves forward. Iterators are used behind the scenes in ",[26,27,28],"code",{},"for"," loops, and they are closely related to ",[31,32,34],"a",{"href":33},"\u002Fglossary\u002Fwhat-is-an-iterable-in-python\u002F","iterable objects",[14,36,37],{},"A beginner-friendly way to think about it is this:",[39,40,41,49],"ul",{},[42,43,44,45,48],"li",{},"An ",[18,46,47],{},"iterable"," is something you can loop over",[42,50,44,51,54],{},[18,52,53],{},"iterator"," is the thing that actually returns each item one by one",[56,57,59],"h2",{"id":58},"quick-example","Quick example",[61,62,67],"pre",{"className":63,"code":64,"language":65,"meta":66,"style":66},"language-python shiki shiki-themes material-theme-lighter github-light github-dark","numbers = [10, 20, 30]\nit = iter(numbers)\n\nprint(next(it))\nprint(next(it))\nprint(next(it))\n","python","",[26,68,69,104,126,133,152,167],{"__ignoreMap":66},[70,71,74,78,82,86,90,93,96,98,101],"span",{"class":72,"line":73},"line",1,[70,75,77],{"class":76},"su5hD","numbers ",[70,79,81],{"class":80},"smGrS","=",[70,83,85],{"class":84},"sP7_E"," [",[70,87,89],{"class":88},"srdBf","10",[70,91,92],{"class":84},",",[70,94,95],{"class":88}," 20",[70,97,92],{"class":84},[70,99,100],{"class":88}," 30",[70,102,103],{"class":84},"]\n",[70,105,107,110,112,116,119,123],{"class":72,"line":106},2,[70,108,109],{"class":76},"it ",[70,111,81],{"class":80},[70,113,115],{"class":114},"sptTA"," iter",[70,117,118],{"class":84},"(",[70,120,122],{"class":121},"slqww","numbers",[70,124,125],{"class":84},")\n",[70,127,129],{"class":72,"line":128},3,[70,130,132],{"emptyLinePlaceholder":131},true,"\n",[70,134,136,139,141,144,146,149],{"class":72,"line":135},4,[70,137,138],{"class":114},"print",[70,140,118],{"class":84},[70,142,143],{"class":114},"next",[70,145,118],{"class":84},[70,147,148],{"class":121},"it",[70,150,151],{"class":84},"))\n",[70,153,155,157,159,161,163,165],{"class":72,"line":154},5,[70,156,138],{"class":114},[70,158,118],{"class":84},[70,160,143],{"class":114},[70,162,118],{"class":84},[70,164,148],{"class":121},[70,166,151],{"class":84},[70,168,170,172,174,176,178,180],{"class":72,"line":169},6,[70,171,138],{"class":114},[70,173,118],{"class":84},[70,175,143],{"class":114},[70,177,118],{"class":84},[70,179,148],{"class":121},[70,181,151],{"class":84},[14,183,184],{},"Output:",[61,186,188],{"className":63,"code":187,"language":65,"meta":66,"style":66},"10\n20\n30\n",[26,189,190,195,200],{"__ignoreMap":66},[70,191,192],{"class":72,"line":73},[70,193,194],{"class":88},"10\n",[70,196,197],{"class":72,"line":106},[70,198,199],{"class":88},"20\n",[70,201,202],{"class":72,"line":128},[70,203,204],{"class":88},"30\n",[14,206,207,208,211,212,215],{},"Use ",[26,209,210],{},"iter()"," to create an iterator from an iterable, then use ",[26,213,214],{},"next()"," to get one item at a time.",[56,217,219],{"id":218},"what-an-iterator-means","What an iterator means",[14,221,222],{},"An iterator:",[39,224,225,228,231,236],{},[42,226,227],{},"Gives values one at a time",[42,229,230],{},"Remembers its current position",[42,232,233,234],{},"Moves forward each time you call ",[26,235,214],{},[42,237,238,239,242],{},"Raises ",[26,240,241],{},"StopIteration"," when there are no items left",[14,244,245],{},"This is why iterators are useful when Python needs to process data step by step.",[56,247,249],{"id":248},"iterator-vs-iterable","Iterator vs iterable",[14,251,252],{},"These two terms are related, but they are not the same.",[39,254,255,260],{},[42,256,44,257,259],{},[18,258,47],{}," is an object you can loop over",[42,261,44,262,264],{},[18,263,53],{}," is the object that does the step-by-step looping",[14,266,267],{},"Common iterable objects include:",[39,269,270,273,276,279],{},[42,271,272],{},"Lists",[42,274,275],{},"Tuples",[42,277,278],{},"Strings",[42,280,281],{},"Dictionaries",[14,283,284,285,21],{},"You usually create an iterator from an iterable with ",[26,286,210],{},[14,288,289],{},"Example:",[61,291,293],{"className":63,"code":292,"language":65,"meta":66,"style":66},"numbers = [1, 2, 3]\n\nprint(type(numbers))\n\nit = iter(numbers)\nprint(type(it))\n",[26,294,295,318,322,338,342,356],{"__ignoreMap":66},[70,296,297,299,301,303,306,308,311,313,316],{"class":72,"line":73},[70,298,77],{"class":76},[70,300,81],{"class":80},[70,302,85],{"class":84},[70,304,305],{"class":88},"1",[70,307,92],{"class":84},[70,309,310],{"class":88}," 2",[70,312,92],{"class":84},[70,314,315],{"class":88}," 3",[70,317,103],{"class":84},[70,319,320],{"class":72,"line":106},[70,321,132],{"emptyLinePlaceholder":131},[70,323,324,326,328,332,334,336],{"class":72,"line":128},[70,325,138],{"class":114},[70,327,118],{"class":84},[70,329,331],{"class":330},"sZMiF","type",[70,333,118],{"class":84},[70,335,122],{"class":121},[70,337,151],{"class":84},[70,339,340],{"class":72,"line":135},[70,341,132],{"emptyLinePlaceholder":131},[70,343,344,346,348,350,352,354],{"class":72,"line":154},[70,345,109],{"class":76},[70,347,81],{"class":80},[70,349,115],{"class":114},[70,351,118],{"class":84},[70,353,122],{"class":121},[70,355,125],{"class":84},[70,357,358,360,362,364,366,368],{"class":72,"line":169},[70,359,138],{"class":114},[70,361,118],{"class":84},[70,363,331],{"class":330},[70,365,118],{"class":84},[70,367,148],{"class":121},[70,369,151],{"class":84},[14,371,372],{},"A list is iterable, but it is not itself an iterator.",[14,374,375,376,21],{},"If you want a deeper explanation, see ",[31,377,378],{"href":33},"what is an iterable in Python",[56,380,382,383,385,386,388],{"id":381},"how-iter-and-next-work","How ",[26,384,210],{}," and ",[26,387,214],{}," work",[14,390,391],{},"The two main functions are:",[39,393,394,400],{},[42,395,396,399],{},[26,397,398],{},"iter(obj)"," creates an iterator from an iterable object",[42,401,402,405],{},[26,403,404],{},"next(iterator)"," gets the next value from that iterator",[14,407,289],{},[61,409,411],{"className":63,"code":410,"language":65,"meta":66,"style":66},"letters = [\"a\", \"b\", \"c\"]\nit = iter(letters)\n\nprint(next(it))\nprint(next(it))\nprint(next(it))\n",[26,412,413,452,467,471,485,499],{"__ignoreMap":66},[70,414,415,418,420,422,426,429,431,433,436,439,441,443,445,448,450],{"class":72,"line":73},[70,416,417],{"class":76},"letters ",[70,419,81],{"class":80},[70,421,85],{"class":84},[70,423,425],{"class":424},"sjJ54","\"",[70,427,31],{"class":428},"s_sjI",[70,430,425],{"class":424},[70,432,92],{"class":84},[70,434,435],{"class":424}," \"",[70,437,438],{"class":428},"b",[70,440,425],{"class":424},[70,442,92],{"class":84},[70,444,435],{"class":424},[70,446,447],{"class":428},"c",[70,449,425],{"class":424},[70,451,103],{"class":84},[70,453,454,456,458,460,462,465],{"class":72,"line":106},[70,455,109],{"class":76},[70,457,81],{"class":80},[70,459,115],{"class":114},[70,461,118],{"class":84},[70,463,464],{"class":121},"letters",[70,466,125],{"class":84},[70,468,469],{"class":72,"line":128},[70,470,132],{"emptyLinePlaceholder":131},[70,472,473,475,477,479,481,483],{"class":72,"line":135},[70,474,138],{"class":114},[70,476,118],{"class":84},[70,478,143],{"class":114},[70,480,118],{"class":84},[70,482,148],{"class":121},[70,484,151],{"class":84},[70,486,487,489,491,493,495,497],{"class":72,"line":154},[70,488,138],{"class":114},[70,490,118],{"class":84},[70,492,143],{"class":114},[70,494,118],{"class":84},[70,496,148],{"class":121},[70,498,151],{"class":84},[70,500,501,503,505,507,509,511],{"class":72,"line":169},[70,502,138],{"class":114},[70,504,118],{"class":84},[70,506,143],{"class":114},[70,508,118],{"class":84},[70,510,148],{"class":121},[70,512,151],{"class":84},[14,514,184],{},[61,516,518],{"className":63,"code":517,"language":65,"meta":66,"style":66},"a\nb\nc\n",[26,519,520,525,530],{"__ignoreMap":66},[70,521,522],{"class":72,"line":73},[70,523,524],{"class":76},"a\n",[70,526,527],{"class":72,"line":106},[70,528,529],{"class":76},"b\n",[70,531,532],{"class":72,"line":128},[70,533,534],{"class":76},"c\n",[14,536,537,538,540,541,21],{},"If you call ",[26,539,214],{}," again after the iterator is finished, Python raises ",[26,542,241],{},[61,544,546],{"className":63,"code":545,"language":65,"meta":66,"style":66},"letters = [\"a\", \"b\", \"c\"]\nit = iter(letters)\n\nprint(next(it))\nprint(next(it))\nprint(next(it))\nprint(next(it))\n",[26,547,548,580,594,598,612,626,640],{"__ignoreMap":66},[70,549,550,552,554,556,558,560,562,564,566,568,570,572,574,576,578],{"class":72,"line":73},[70,551,417],{"class":76},[70,553,81],{"class":80},[70,555,85],{"class":84},[70,557,425],{"class":424},[70,559,31],{"class":428},[70,561,425],{"class":424},[70,563,92],{"class":84},[70,565,435],{"class":424},[70,567,438],{"class":428},[70,569,425],{"class":424},[70,571,92],{"class":84},[70,573,435],{"class":424},[70,575,447],{"class":428},[70,577,425],{"class":424},[70,579,103],{"class":84},[70,581,582,584,586,588,590,592],{"class":72,"line":106},[70,583,109],{"class":76},[70,585,81],{"class":80},[70,587,115],{"class":114},[70,589,118],{"class":84},[70,591,464],{"class":121},[70,593,125],{"class":84},[70,595,596],{"class":72,"line":128},[70,597,132],{"emptyLinePlaceholder":131},[70,599,600,602,604,606,608,610],{"class":72,"line":135},[70,601,138],{"class":114},[70,603,118],{"class":84},[70,605,143],{"class":114},[70,607,118],{"class":84},[70,609,148],{"class":121},[70,611,151],{"class":84},[70,613,614,616,618,620,622,624],{"class":72,"line":154},[70,615,138],{"class":114},[70,617,118],{"class":84},[70,619,143],{"class":114},[70,621,118],{"class":84},[70,623,148],{"class":121},[70,625,151],{"class":84},[70,627,628,630,632,634,636,638],{"class":72,"line":169},[70,629,138],{"class":114},[70,631,118],{"class":84},[70,633,143],{"class":114},[70,635,118],{"class":84},[70,637,148],{"class":121},[70,639,151],{"class":84},[70,641,643,645,647,649,651,653],{"class":72,"line":642},7,[70,644,138],{"class":114},[70,646,118],{"class":84},[70,648,143],{"class":114},[70,650,118],{"class":84},[70,652,148],{"class":121},[70,654,151],{"class":84},[14,656,657],{},"This causes:",[61,659,661],{"className":63,"code":660,"language":65,"meta":66,"style":66},"StopIteration\n",[26,662,663],{"__ignoreMap":66},[70,664,665],{"class":72,"line":73},[70,666,660],{"class":330},[14,668,669,670,21],{},"That exception simply means there are no more values left. If you want to understand this error better, see ",[31,671,673],{"href":672},"\u002Ferrors\u002Fstopiteration-exception-in-python-explained\u002F","StopIteration exception in Python explained",[56,675,677],{"id":676},"how-for-loops-use-iterators","How for loops use iterators",[14,679,680,681,683],{},"A ",[26,682,28],{}," loop uses iterators automatically.",[14,685,686],{},"When you write this:",[61,688,690],{"className":63,"code":689,"language":65,"meta":66,"style":66},"numbers = [10, 20, 30]\n\nfor number in numbers:\n    print(number)\n",[26,691,692,712,716,733],{"__ignoreMap":66},[70,693,694,696,698,700,702,704,706,708,710],{"class":72,"line":73},[70,695,77],{"class":76},[70,697,81],{"class":80},[70,699,85],{"class":84},[70,701,89],{"class":88},[70,703,92],{"class":84},[70,705,95],{"class":88},[70,707,92],{"class":84},[70,709,100],{"class":88},[70,711,103],{"class":84},[70,713,714],{"class":72,"line":106},[70,715,132],{"emptyLinePlaceholder":131},[70,717,718,721,724,727,730],{"class":72,"line":128},[70,719,28],{"class":720},"sVHd0",[70,722,723],{"class":76}," number ",[70,725,726],{"class":720},"in",[70,728,729],{"class":76}," numbers",[70,731,732],{"class":84},":\n",[70,734,735,738,740,743],{"class":72,"line":135},[70,736,737],{"class":114},"    print",[70,739,118],{"class":84},[70,741,742],{"class":121},"number",[70,744,125],{"class":84},[14,746,747],{},"Python does something like this behind the scenes:",[749,750,751,757,763],"ol",{},[42,752,753,754],{},"Calls ",[26,755,756],{},"iter(numbers)",[42,758,759,760],{},"Keeps calling ",[26,761,762],{},"next(...)",[42,764,765,766,768],{},"Stops when ",[26,767,241],{}," happens",[14,770,771,772,774],{},"So a ",[26,773,28],{}," loop is really using the iterator protocol for you.",[14,776,777],{},"That is why you usually do not need to manage iterators directly. Still, understanding them helps explain how loops work and why some objects can only be used once.",[56,779,781],{"id":780},"simple-example-to-include","Simple example to include",[14,783,784],{},"Here is a full example that shows how an iterator is created and consumed:",[61,786,788],{"className":63,"code":787,"language":65,"meta":66,"style":66},"numbers = [100, 200, 300]\nit = iter(numbers)\n\nprint(next(it))  # first item\nprint(next(it))  # second item\nprint(next(it))  # third item\n\nprint(next(it))  # no items left\n",[26,789,790,813,827,831,850,867,884,888],{"__ignoreMap":66},[70,791,792,794,796,798,801,803,806,808,811],{"class":72,"line":73},[70,793,77],{"class":76},[70,795,81],{"class":80},[70,797,85],{"class":84},[70,799,800],{"class":88},"100",[70,802,92],{"class":84},[70,804,805],{"class":88}," 200",[70,807,92],{"class":84},[70,809,810],{"class":88}," 300",[70,812,103],{"class":84},[70,814,815,817,819,821,823,825],{"class":72,"line":106},[70,816,109],{"class":76},[70,818,81],{"class":80},[70,820,115],{"class":114},[70,822,118],{"class":84},[70,824,122],{"class":121},[70,826,125],{"class":84},[70,828,829],{"class":72,"line":128},[70,830,132],{"emptyLinePlaceholder":131},[70,832,833,835,837,839,841,843,846],{"class":72,"line":135},[70,834,138],{"class":114},[70,836,118],{"class":84},[70,838,143],{"class":114},[70,840,118],{"class":84},[70,842,148],{"class":121},[70,844,845],{"class":84},"))",[70,847,849],{"class":848},"sutJx","  # first item\n",[70,851,852,854,856,858,860,862,864],{"class":72,"line":154},[70,853,138],{"class":114},[70,855,118],{"class":84},[70,857,143],{"class":114},[70,859,118],{"class":84},[70,861,148],{"class":121},[70,863,845],{"class":84},[70,865,866],{"class":848},"  # second item\n",[70,868,869,871,873,875,877,879,881],{"class":72,"line":169},[70,870,138],{"class":114},[70,872,118],{"class":84},[70,874,143],{"class":114},[70,876,118],{"class":84},[70,878,148],{"class":121},[70,880,845],{"class":84},[70,882,883],{"class":848},"  # third item\n",[70,885,886],{"class":72,"line":642},[70,887,132],{"emptyLinePlaceholder":131},[70,889,891,893,895,897,899,901,903],{"class":72,"line":890},8,[70,892,138],{"class":114},[70,894,118],{"class":84},[70,896,143],{"class":114},[70,898,118],{"class":84},[70,900,148],{"class":121},[70,902,845],{"class":84},[70,904,905],{"class":848},"  # no items left\n",[14,907,908],{},"Expected behavior:",[39,910,911,917],{},[42,912,913,914,916],{},"The first three ",[26,915,214],{}," calls print values",[42,918,919,920,922,923],{},"The last ",[26,921,214],{}," call raises ",[26,924,241],{},[14,926,927,928,385,931,934],{},"A safer version uses ",[26,929,930],{},"try",[26,932,933],{},"except",":",[61,936,938],{"className":63,"code":937,"language":65,"meta":66,"style":66},"numbers = [100, 200, 300]\nit = iter(numbers)\n\ntry:\n    while True:\n        print(next(it))\nexcept StopIteration:\n    print(\"Iterator finished\")\n",[26,939,940,960,974,978,984,995,1010,1019],{"__ignoreMap":66},[70,941,942,944,946,948,950,952,954,956,958],{"class":72,"line":73},[70,943,77],{"class":76},[70,945,81],{"class":80},[70,947,85],{"class":84},[70,949,800],{"class":88},[70,951,92],{"class":84},[70,953,805],{"class":88},[70,955,92],{"class":84},[70,957,810],{"class":88},[70,959,103],{"class":84},[70,961,962,964,966,968,970,972],{"class":72,"line":106},[70,963,109],{"class":76},[70,965,81],{"class":80},[70,967,115],{"class":114},[70,969,118],{"class":84},[70,971,122],{"class":121},[70,973,125],{"class":84},[70,975,976],{"class":72,"line":128},[70,977,132],{"emptyLinePlaceholder":131},[70,979,980,982],{"class":72,"line":135},[70,981,930],{"class":720},[70,983,732],{"class":84},[70,985,986,989,993],{"class":72,"line":154},[70,987,988],{"class":720},"    while",[70,990,992],{"class":991},"s39Yj"," True",[70,994,732],{"class":84},[70,996,997,1000,1002,1004,1006,1008],{"class":72,"line":169},[70,998,999],{"class":114},"        print",[70,1001,118],{"class":84},[70,1003,143],{"class":114},[70,1005,118],{"class":84},[70,1007,148],{"class":121},[70,1009,151],{"class":84},[70,1011,1012,1014,1017],{"class":72,"line":642},[70,1013,933],{"class":720},[70,1015,1016],{"class":330}," StopIteration",[70,1018,732],{"class":84},[70,1020,1021,1023,1025,1027,1030,1032],{"class":72,"line":890},[70,1022,737],{"class":114},[70,1024,118],{"class":84},[70,1026,425],{"class":424},[70,1028,1029],{"class":428},"Iterator finished",[70,1031,425],{"class":424},[70,1033,125],{"class":84},[14,1035,184],{},[61,1037,1039],{"className":63,"code":1038,"language":65,"meta":66,"style":66},"100\n200\n300\nIterator finished\n",[26,1040,1041,1046,1051,1056],{"__ignoreMap":66},[70,1042,1043],{"class":72,"line":73},[70,1044,1045],{"class":88},"100\n",[70,1047,1048],{"class":72,"line":106},[70,1049,1050],{"class":88},"200\n",[70,1052,1053],{"class":72,"line":128},[70,1054,1055],{"class":88},"300\n",[70,1057,1058],{"class":72,"line":135},[70,1059,1060],{"class":76},"Iterator finished\n",[56,1062,1064],{"id":1063},"when-beginners-should-care","When beginners should care",[14,1066,1067],{},"You do not need to use iterators directly all the time, but they matter in a few common situations:",[39,1069,1070,1076,1082,1089,1094],{},[42,1071,1072,1073,1075],{},"When learning how ",[26,1074,28],{}," loops work",[42,1077,1078,1079,1081],{},"When using ",[26,1080,214],{}," directly",[42,1083,1084,1085],{},"When working with ",[31,1086,1088],{"href":1087},"\u002Flearn\u002Fgenerators-in-python-explained\u002F","generator objects in Python",[42,1090,1091,1092],{},"When debugging ",[26,1093,241],{},[42,1095,1096],{},"When dealing with one-time-use objects",[14,1098,1099,1100,1106],{},"Understanding iterators also helps when using tools like ",[31,1101,1103],{"href":1102},"\u002Freference\u002Fpython-enumerate-function-explained\u002F",[26,1104,1105],{},"enumerate()",", which work with iterable data.",[56,1108,1110],{"id":1109},"important-iterator-behavior","Important iterator behavior",[14,1112,1113],{},"There are a few behaviors beginners should know:",[39,1115,1116,1123,1126,1129],{},[42,1117,1118,1119,1122],{},"Most iterators are ",[18,1120,1121],{},"consumed"," as you use them",[42,1124,1125],{},"You usually cannot restart the same iterator from the beginning",[42,1127,1128],{},"If you need to loop again, create a new iterator",[42,1130,1131],{},"Not every iterable object is itself an iterator",[14,1133,289],{},[61,1135,1137],{"className":63,"code":1136,"language":65,"meta":66,"style":66},"numbers = [1, 2, 3]\nit = iter(numbers)\n\nfor value in it:\n    print(value)\n\nprint(\"Loop again:\")\n\nfor value in it:\n    print(value)\n",[26,1138,1139,1159,1173,1177,1191,1202,1206,1221,1225,1238],{"__ignoreMap":66},[70,1140,1141,1143,1145,1147,1149,1151,1153,1155,1157],{"class":72,"line":73},[70,1142,77],{"class":76},[70,1144,81],{"class":80},[70,1146,85],{"class":84},[70,1148,305],{"class":88},[70,1150,92],{"class":84},[70,1152,310],{"class":88},[70,1154,92],{"class":84},[70,1156,315],{"class":88},[70,1158,103],{"class":84},[70,1160,1161,1163,1165,1167,1169,1171],{"class":72,"line":106},[70,1162,109],{"class":76},[70,1164,81],{"class":80},[70,1166,115],{"class":114},[70,1168,118],{"class":84},[70,1170,122],{"class":121},[70,1172,125],{"class":84},[70,1174,1175],{"class":72,"line":128},[70,1176,132],{"emptyLinePlaceholder":131},[70,1178,1179,1181,1184,1186,1189],{"class":72,"line":135},[70,1180,28],{"class":720},[70,1182,1183],{"class":76}," value ",[70,1185,726],{"class":720},[70,1187,1188],{"class":76}," it",[70,1190,732],{"class":84},[70,1192,1193,1195,1197,1200],{"class":72,"line":154},[70,1194,737],{"class":114},[70,1196,118],{"class":84},[70,1198,1199],{"class":121},"value",[70,1201,125],{"class":84},[70,1203,1204],{"class":72,"line":169},[70,1205,132],{"emptyLinePlaceholder":131},[70,1207,1208,1210,1212,1214,1217,1219],{"class":72,"line":642},[70,1209,138],{"class":114},[70,1211,118],{"class":84},[70,1213,425],{"class":424},[70,1215,1216],{"class":428},"Loop again:",[70,1218,425],{"class":424},[70,1220,125],{"class":84},[70,1222,1223],{"class":72,"line":890},[70,1224,132],{"emptyLinePlaceholder":131},[70,1226,1228,1230,1232,1234,1236],{"class":72,"line":1227},9,[70,1229,28],{"class":720},[70,1231,1183],{"class":76},[70,1233,726],{"class":720},[70,1235,1188],{"class":76},[70,1237,732],{"class":84},[70,1239,1241,1243,1245,1247],{"class":72,"line":1240},10,[70,1242,737],{"class":114},[70,1244,118],{"class":84},[70,1246,1199],{"class":121},[70,1248,125],{"class":84},[14,1250,184],{},[61,1252,1254],{"className":63,"code":1253,"language":65,"meta":66,"style":66},"1\n2\n3\nLoop again:\n",[26,1255,1256,1261,1266,1271],{"__ignoreMap":66},[70,1257,1258],{"class":72,"line":73},[70,1259,1260],{"class":88},"1\n",[70,1262,1263],{"class":72,"line":106},[70,1264,1265],{"class":88},"2\n",[70,1267,1268],{"class":72,"line":128},[70,1269,1270],{"class":88},"3\n",[70,1272,1273,1276],{"class":72,"line":135},[70,1274,1275],{"class":76},"Loop again",[70,1277,732],{"class":84},[14,1279,1280],{},"The second loop prints nothing because the iterator is already exhausted.",[14,1282,1283],{},"To start over, create a new iterator:",[61,1285,1287],{"className":63,"code":1286,"language":65,"meta":66,"style":66},"numbers = [1, 2, 3]\n\nit1 = iter(numbers)\nit2 = iter(numbers)\n\nprint(next(it1))\nprint(next(it2))\n",[26,1288,1289,1309,1313,1328,1343,1347,1362],{"__ignoreMap":66},[70,1290,1291,1293,1295,1297,1299,1301,1303,1305,1307],{"class":72,"line":73},[70,1292,77],{"class":76},[70,1294,81],{"class":80},[70,1296,85],{"class":84},[70,1298,305],{"class":88},[70,1300,92],{"class":84},[70,1302,310],{"class":88},[70,1304,92],{"class":84},[70,1306,315],{"class":88},[70,1308,103],{"class":84},[70,1310,1311],{"class":72,"line":106},[70,1312,132],{"emptyLinePlaceholder":131},[70,1314,1315,1318,1320,1322,1324,1326],{"class":72,"line":128},[70,1316,1317],{"class":76},"it1 ",[70,1319,81],{"class":80},[70,1321,115],{"class":114},[70,1323,118],{"class":84},[70,1325,122],{"class":121},[70,1327,125],{"class":84},[70,1329,1330,1333,1335,1337,1339,1341],{"class":72,"line":135},[70,1331,1332],{"class":76},"it2 ",[70,1334,81],{"class":80},[70,1336,115],{"class":114},[70,1338,118],{"class":84},[70,1340,122],{"class":121},[70,1342,125],{"class":84},[70,1344,1345],{"class":72,"line":154},[70,1346,132],{"emptyLinePlaceholder":131},[70,1348,1349,1351,1353,1355,1357,1360],{"class":72,"line":169},[70,1350,138],{"class":114},[70,1352,118],{"class":84},[70,1354,143],{"class":114},[70,1356,118],{"class":84},[70,1358,1359],{"class":121},"it1",[70,1361,151],{"class":84},[70,1363,1364,1366,1368,1370,1372,1375],{"class":72,"line":642},[70,1365,138],{"class":114},[70,1367,118],{"class":84},[70,1369,143],{"class":114},[70,1371,118],{"class":84},[70,1373,1374],{"class":121},"it2",[70,1376,151],{"class":84},[14,1378,184],{},[61,1380,1382],{"className":63,"code":1381,"language":65,"meta":66,"style":66},"1\n1\n",[26,1383,1384,1388],{"__ignoreMap":66},[70,1385,1386],{"class":72,"line":73},[70,1387,1260],{"class":88},[70,1389,1390],{"class":72,"line":106},[70,1391,1260],{"class":88},[56,1393,1395],{"id":1394},"common-mistakes","Common mistakes",[14,1397,1398],{},"Beginners often run into these problems:",[39,1400,1401,1404,1413,1416,1419],{},[42,1402,1403],{},"Confusing iterable objects like lists with iterator objects",[42,1405,1406,1407,1409,1410],{},"Calling ",[26,1408,214],{}," on a list instead of on ",[26,1411,1412],{},"iter(list)",[42,1414,1415],{},"Expecting an iterator to reset automatically",[42,1417,1418],{},"Using an iterator once and not realizing it is already exhausted",[42,1420,1421,1422,1424],{},"Not understanding why ",[26,1423,241],{}," appears",[14,1426,1427,1428,1431],{},"For example, this does ",[18,1429,1430],{},"not"," work:",[61,1433,1435],{"className":63,"code":1434,"language":65,"meta":66,"style":66},"numbers = [10, 20, 30]\nprint(next(numbers))\n",[26,1436,1437,1457],{"__ignoreMap":66},[70,1438,1439,1441,1443,1445,1447,1449,1451,1453,1455],{"class":72,"line":73},[70,1440,77],{"class":76},[70,1442,81],{"class":80},[70,1444,85],{"class":84},[70,1446,89],{"class":88},[70,1448,92],{"class":84},[70,1450,95],{"class":88},[70,1452,92],{"class":84},[70,1454,100],{"class":88},[70,1456,103],{"class":84},[70,1458,1459,1461,1463,1465,1467,1469],{"class":72,"line":106},[70,1460,138],{"class":114},[70,1462,118],{"class":84},[70,1464,143],{"class":114},[70,1466,118],{"class":84},[70,1468,122],{"class":121},[70,1470,151],{"class":84},[14,1472,1473],{},"It raises an error because a list is not an iterator.",[14,1475,1476],{},"Correct version:",[61,1478,1480],{"className":63,"code":1479,"language":65,"meta":66,"style":66},"numbers = [10, 20, 30]\nit = iter(numbers)\nprint(next(it))\n",[26,1481,1482,1502,1516],{"__ignoreMap":66},[70,1483,1484,1486,1488,1490,1492,1494,1496,1498,1500],{"class":72,"line":73},[70,1485,77],{"class":76},[70,1487,81],{"class":80},[70,1489,85],{"class":84},[70,1491,89],{"class":88},[70,1493,92],{"class":84},[70,1495,95],{"class":88},[70,1497,92],{"class":84},[70,1499,100],{"class":88},[70,1501,103],{"class":84},[70,1503,1504,1506,1508,1510,1512,1514],{"class":72,"line":106},[70,1505,109],{"class":76},[70,1507,81],{"class":80},[70,1509,115],{"class":114},[70,1511,118],{"class":84},[70,1513,122],{"class":121},[70,1515,125],{"class":84},[70,1517,1518,1520,1522,1524,1526,1528],{"class":72,"line":128},[70,1519,138],{"class":114},[70,1521,118],{"class":84},[70,1523,143],{"class":114},[70,1525,118],{"class":84},[70,1527,148],{"class":121},[70,1529,151],{"class":84},[14,1531,1532],{},"Useful things to check while debugging:",[61,1534,1536],{"className":63,"code":1535,"language":65,"meta":66,"style":66},"type(obj)\niter(obj)\nnext(it)\nhasattr(obj, '__iter__')\nhasattr(obj, '__next__')\n",[26,1537,1538,1549,1560,1570,1592],{"__ignoreMap":66},[70,1539,1540,1542,1544,1547],{"class":72,"line":73},[70,1541,331],{"class":330},[70,1543,118],{"class":84},[70,1545,1546],{"class":121},"obj",[70,1548,125],{"class":84},[70,1550,1551,1554,1556,1558],{"class":72,"line":106},[70,1552,1553],{"class":114},"iter",[70,1555,118],{"class":84},[70,1557,1546],{"class":121},[70,1559,125],{"class":84},[70,1561,1562,1564,1566,1568],{"class":72,"line":128},[70,1563,143],{"class":114},[70,1565,118],{"class":84},[70,1567,148],{"class":121},[70,1569,125],{"class":84},[70,1571,1572,1575,1577,1579,1581,1584,1587,1590],{"class":72,"line":135},[70,1573,1574],{"class":114},"hasattr",[70,1576,118],{"class":84},[70,1578,1546],{"class":121},[70,1580,92],{"class":84},[70,1582,1583],{"class":424}," '",[70,1585,1586],{"class":428},"__iter__",[70,1588,1589],{"class":424},"'",[70,1591,125],{"class":84},[70,1593,1594,1596,1598,1600,1602,1604,1607,1609],{"class":72,"line":154},[70,1595,1574],{"class":114},[70,1597,118],{"class":84},[70,1599,1546],{"class":121},[70,1601,92],{"class":84},[70,1603,1583],{"class":424},[70,1605,1606],{"class":428},"__next__",[70,1608,1589],{"class":424},[70,1610,125],{"class":84},[14,1612,1613],{},"In simple terms:",[39,1615,1616,1621],{},[42,1617,1618,1620],{},[26,1619,1586],{}," usually means an object can be iterated over",[42,1622,1623,1625],{},[26,1624,1606],{}," usually means it behaves like an iterator",[56,1627,1629],{"id":1628},"faq","FAQ",[1631,1632,1634],"h3",{"id":1633},"is-a-list-an-iterator-in-python","Is a list an iterator in Python?",[14,1636,1637,1638,21],{},"No. A list is iterable, but it is not itself an iterator. You can create an iterator from it with ",[26,1639,1640],{},"iter(list_name)",[1631,1642,1644],{"id":1643},"what-is-the-difference-between-an-iterator-and-an-iterable","What is the difference between an iterator and an iterable?",[14,1646,1647],{},"An iterable can be looped over. An iterator returns items one at a time and keeps track of its current position.",[1631,1649,1651,1652,1654,1655,1657],{"id":1650},"why-does-next-give-stopiteration","Why does ",[26,1653,214],{}," give ",[26,1656,241],{},"?",[14,1659,1660],{},"It means the iterator has no more values left.",[1631,1662,1664],{"id":1663},"do-for-loops-use-iterators","Do for loops use iterators?",[14,1666,1667,1668,1670],{},"Yes. A ",[26,1669,28],{}," loop uses the iterator protocol behind the scenes.",[1631,1672,1674],{"id":1673},"can-i-reuse-an-iterator","Can I reuse an iterator?",[14,1676,1677],{},"Usually no. Once it is exhausted, create a new iterator from the original iterable if possible.",[56,1679,1681],{"id":1680},"see-also","See also",[39,1683,1684,1689,1695,1700,1704],{},[42,1685,1686],{},[31,1687,1688],{"href":33},"What is an iterable in Python?",[42,1690,1691],{},[31,1692,1694],{"href":1693},"\u002Flearn\u002Fiterators-and-iterable-objects-explained\u002F","Iterators and iterable objects explained",[42,1696,1697],{},[31,1698,1699],{"href":1087},"Generators in Python explained",[42,1701,1702],{},[31,1703,673],{"href":672},[42,1705,1706],{},[31,1707,1708,1709,1711],{"href":1102},"Python ",[26,1710,1105],{}," function explained",[1713,1714,1715],"style",{},"html pre.shiki code .su5hD, html code.shiki .su5hD{--shiki-light:#90A4AE;--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .smGrS, html code.shiki .smGrS{--shiki-light:#39ADB5;--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sP7_E, html code.shiki .sP7_E{--shiki-light:#39ADB5;--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .srdBf, html code.shiki .srdBf{--shiki-light:#F76D47;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sptTA, html code.shiki .sptTA{--shiki-light:#6182B8;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .slqww, html code.shiki .slqww{--shiki-light:#6182B8;--shiki-default:#24292E;--shiki-dark:#E1E4E8}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sZMiF, html code.shiki .sZMiF{--shiki-light:#E2931D;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sjJ54, html code.shiki .sjJ54{--shiki-light:#39ADB5;--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .s_sjI, html code.shiki .s_sjI{--shiki-light:#91B859;--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sVHd0, html code.shiki .sVHd0{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#D73A49;--shiki-default-font-style:inherit;--shiki-dark:#F97583;--shiki-dark-font-style:inherit}html pre.shiki code .sutJx, html code.shiki .sutJx{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#6A737D;--shiki-default-font-style:inherit;--shiki-dark:#6A737D;--shiki-dark-font-style:inherit}html pre.shiki code .s39Yj, html code.shiki .s39Yj{--shiki-light:#39ADB5;--shiki-default:#005CC5;--shiki-dark:#79B8FF}",{"title":66,"searchDepth":106,"depth":106,"links":1717},[1718,1719,1720,1721,1723,1724,1725,1726,1727,1728,1736],{"id":58,"depth":106,"text":59},{"id":218,"depth":106,"text":219},{"id":248,"depth":106,"text":249},{"id":381,"depth":106,"text":1722},"How iter() and next() work",{"id":676,"depth":106,"text":677},{"id":780,"depth":106,"text":781},{"id":1063,"depth":106,"text":1064},{"id":1109,"depth":106,"text":1110},{"id":1394,"depth":106,"text":1395},{"id":1628,"depth":106,"text":1629,"children":1729},[1730,1731,1732,1734,1735],{"id":1633,"depth":128,"text":1634},{"id":1643,"depth":128,"text":1644},{"id":1650,"depth":128,"text":1733},"Why does next() give StopIteration?",{"id":1663,"depth":128,"text":1664},{"id":1673,"depth":128,"text":1674},{"id":1680,"depth":106,"text":1681},"Master what is an iterator in python in our comprehensive Python beginner guide.","md",{},"\u002Fglossary\u002Fwhat-is-an-iterator-in-python",{"title":5,"description":1737},"glossary\u002Fwhat-is-an-iterator-in-python","DfZz96A67zLDocRJuMtLCjoJc2LPigvmhye7LUCIaSk",1777585468127]