[{"data":1,"prerenderedAt":2980},["ShallowReactive",2],{"doc-\u002Flearn\u002Fiterators-and-iterable-objects-explained":3},{"id":4,"title":5,"body":6,"description":2973,"extension":2974,"meta":2975,"navigation":142,"path":2976,"seo":2977,"stem":2978,"__hash__":2979},"content\u002Flearn\u002Fiterators-and-iterable-objects-explained.md","Iterators and Iterable Objects Explained",{"type":7,"value":8,"toc":2934},"minimark",[9,13,26,29,51,54,66,71,202,212,216,245,249,257,260,286,289,367,370,390,397,403,468,474,483,487,492,498,500,586,588,608,613,716,719,729,736,740,743,755,758,837,839,855,858,861,948,950,963,966,972,1039,1041,1049,1056,1059,1066,1071,1073,1154,1156,1176,1182,1187,1192,1270,1276,1286,1377,1379,1403,1410,1416,1422,1442,1445,1499,1502,1602,1605,1621,1627,1634,1638,1641,1645,1750,1753,1787,1789,1807,1811,1814,1891,1894,1945,1950,1955,1989,1991,2011,2018,2022,2025,2097,2100,2104,2107,2110,2124,2132,2136,2139,2146,2149,2188,2194,2251,2255,2262,2265,2305,2307,2315,2319,2322,2416,2419,2504,2514,2520,2630,2632,2650,2654,2657,2747,2750,2821,2824,2850,2854,2858,2864,2868,2877,2881,2884,2888,2894,2898,2927,2930],[10,11,5],"h1",{"id":12},"iterators-and-iterable-objects-explained",[14,15,16,17,21,22,25],"p",{},"An ",[18,19,20],"strong",{},"iterable"," is something you can loop over. An ",[18,23,24],{},"iterator"," is the object that gives you values one at a time during that loop.",[14,27,28],{},"This difference is important because it helps you understand:",[30,31,32,41,48],"ul",{},[33,34,35,36,40],"li",{},"how ",[37,38,39],"code",{},"for"," loops work",[33,42,43,44,47],{},"why ",[37,45,46],{},"next()"," works on some objects but not others",[33,49,50],{},"why some objects get \"used up\" after you loop through them",[14,52,53],{},"A good short way to remember it is:",[30,55,56,61],{},[33,57,58,60],{},[18,59,20],{}," = can be looped over",[33,62,63,65],{},[18,64,24],{}," = produces the next value",[67,68,70],"h2",{"id":69},"quick-example","Quick example",[72,73,78],"pre",{"className":74,"code":75,"language":76,"meta":77,"style":77},"language-python shiki shiki-themes material-theme-lighter github-light github-dark","numbers = [10, 20, 30]\niterator = iter(numbers)\n\nprint(next(iterator))  # 10\nprint(next(iterator))  # 20\nprint(next(iterator))  # 30\n","python","",[37,79,80,115,137,144,166,184],{"__ignoreMap":77},[81,82,85,89,93,97,101,104,107,109,112],"span",{"class":83,"line":84},"line",1,[81,86,88],{"class":87},"su5hD","numbers ",[81,90,92],{"class":91},"smGrS","=",[81,94,96],{"class":95},"sP7_E"," [",[81,98,100],{"class":99},"srdBf","10",[81,102,103],{"class":95},",",[81,105,106],{"class":99}," 20",[81,108,103],{"class":95},[81,110,111],{"class":99}," 30",[81,113,114],{"class":95},"]\n",[81,116,118,121,123,127,130,134],{"class":83,"line":117},2,[81,119,120],{"class":87},"iterator ",[81,122,92],{"class":91},[81,124,126],{"class":125},"sptTA"," iter",[81,128,129],{"class":95},"(",[81,131,133],{"class":132},"slqww","numbers",[81,135,136],{"class":95},")\n",[81,138,140],{"class":83,"line":139},3,[81,141,143],{"emptyLinePlaceholder":142},true,"\n",[81,145,147,150,152,155,157,159,162],{"class":83,"line":146},4,[81,148,149],{"class":125},"print",[81,151,129],{"class":95},[81,153,154],{"class":125},"next",[81,156,129],{"class":95},[81,158,24],{"class":132},[81,160,161],{"class":95},"))",[81,163,165],{"class":164},"sutJx","  # 10\n",[81,167,169,171,173,175,177,179,181],{"class":83,"line":168},5,[81,170,149],{"class":125},[81,172,129],{"class":95},[81,174,154],{"class":125},[81,176,129],{"class":95},[81,178,24],{"class":132},[81,180,161],{"class":95},[81,182,183],{"class":164},"  # 20\n",[81,185,187,189,191,193,195,197,199],{"class":83,"line":186},6,[81,188,149],{"class":125},[81,190,129],{"class":95},[81,192,154],{"class":125},[81,194,129],{"class":95},[81,196,24],{"class":132},[81,198,161],{"class":95},[81,200,201],{"class":164},"  # 30\n",[14,203,204,205,208,209,211],{},"Use ",[37,206,207],{},"iter()"," to get an iterator from an iterable like a list. Use ",[37,210,46],{}," to read one item at a time.",[67,213,215],{"id":214},"what-this-page-covers","What this page covers",[30,217,218,221,224,233,238],{},[33,219,220],{},"What an iterable is",[33,222,223],{},"What an iterator is",[33,225,226,227,229,230,232],{},"How ",[37,228,207],{}," and ",[37,231,46],{}," work",[33,234,226,235,237],{},[37,236,39],{}," loops use iterators behind the scenes",[33,239,240,241,244],{},"What ",[37,242,243],{},"StopIteration"," means",[67,246,248],{"id":247},"what-is-an-iterable","What is an iterable?",[14,250,16,251,253,254,256],{},[18,252,20],{}," is an object you can loop over with a ",[37,255,39],{}," loop.",[14,258,259],{},"Common iterable objects include:",[30,261,262,265,268,271,274,277,283],{},[33,263,264],{},"lists",[33,266,267],{},"tuples",[33,269,270],{},"strings",[33,272,273],{},"dictionaries",[33,275,276],{},"sets",[33,278,279,282],{},[37,280,281],{},"range()"," objects",[33,284,285],{},"files opened for reading",[14,287,288],{},"Example:",[72,290,292],{"className":74,"code":291,"language":76,"meta":77,"style":77},"colors = [\"red\", \"green\", \"blue\"]\n\nfor color in colors:\n    print(color)\n",[37,293,294,334,338,355],{"__ignoreMap":77},[81,295,296,299,301,303,307,311,313,315,318,321,323,325,327,330,332],{"class":83,"line":84},[81,297,298],{"class":87},"colors ",[81,300,92],{"class":91},[81,302,96],{"class":95},[81,304,306],{"class":305},"sjJ54","\"",[81,308,310],{"class":309},"s_sjI","red",[81,312,306],{"class":305},[81,314,103],{"class":95},[81,316,317],{"class":305}," \"",[81,319,320],{"class":309},"green",[81,322,306],{"class":305},[81,324,103],{"class":95},[81,326,317],{"class":305},[81,328,329],{"class":309},"blue",[81,331,306],{"class":305},[81,333,114],{"class":95},[81,335,336],{"class":83,"line":117},[81,337,143],{"emptyLinePlaceholder":142},[81,339,340,343,346,349,352],{"class":83,"line":139},[81,341,39],{"class":342},"sVHd0",[81,344,345],{"class":87}," color ",[81,347,348],{"class":342},"in",[81,350,351],{"class":87}," colors",[81,353,354],{"class":95},":\n",[81,356,357,360,362,365],{"class":83,"line":146},[81,358,359],{"class":125},"    print",[81,361,129],{"class":95},[81,363,364],{"class":132},"color",[81,366,136],{"class":95},[14,368,369],{},"Output:",[72,371,373],{"className":74,"code":372,"language":76,"meta":77,"style":77},"red\ngreen\nblue\n",[37,374,375,380,385],{"__ignoreMap":77},[81,376,377],{"class":83,"line":84},[81,378,379],{"class":87},"red\n",[81,381,382],{"class":83,"line":117},[81,383,384],{"class":87},"green\n",[81,386,387],{"class":83,"line":139},[81,388,389],{"class":87},"blue\n",[14,391,392,393,396],{},"Here, ",[37,394,395],{},"colors"," is iterable because Python can go through its values one by one.",[14,398,399,400,402],{},"You can also pass an iterable to ",[37,401,207],{}," to get an iterator:",[72,404,406],{"className":74,"code":405,"language":76,"meta":77,"style":77},"colors = [\"red\", \"green\", \"blue\"]\niterator = iter(colors)\n\nprint(iterator)\n",[37,407,408,440,454,458],{"__ignoreMap":77},[81,409,410,412,414,416,418,420,422,424,426,428,430,432,434,436,438],{"class":83,"line":84},[81,411,298],{"class":87},[81,413,92],{"class":91},[81,415,96],{"class":95},[81,417,306],{"class":305},[81,419,310],{"class":309},[81,421,306],{"class":305},[81,423,103],{"class":95},[81,425,317],{"class":305},[81,427,320],{"class":309},[81,429,306],{"class":305},[81,431,103],{"class":95},[81,433,317],{"class":305},[81,435,329],{"class":309},[81,437,306],{"class":305},[81,439,114],{"class":95},[81,441,442,444,446,448,450,452],{"class":83,"line":117},[81,443,120],{"class":87},[81,445,92],{"class":91},[81,447,126],{"class":125},[81,449,129],{"class":95},[81,451,395],{"class":132},[81,453,136],{"class":95},[81,455,456],{"class":83,"line":139},[81,457,143],{"emptyLinePlaceholder":142},[81,459,460,462,464,466],{"class":83,"line":146},[81,461,149],{"class":125},[81,463,129],{"class":95},[81,465,24],{"class":132},[81,467,136],{"class":95},[14,469,470,471,473],{},"The exact printed result may look different, but ",[37,472,24],{}," is now an iterator object.",[14,475,476,477,482],{},"If you want a fuller beginner definition, see ",[478,479,481],"a",{"href":480},"\u002Fglossary\u002Fwhat-is-an-iterable-in-python\u002F","what is an iterable in Python",".",[67,484,486],{"id":485},"what-is-an-iterator","What is an iterator?",[14,488,16,489,491],{},[18,490,24],{}," is an object that gives values one at a time.",[14,493,494,495,497],{},"It keeps track of where it is. Each time you call ",[37,496,46],{},", it returns the next item.",[14,499,288],{},[72,501,503],{"className":74,"code":502,"language":76,"meta":77,"style":77},"numbers = [10, 20, 30]\niterator = iter(numbers)\n\nprint(next(iterator))\nprint(next(iterator))\nprint(next(iterator))\n",[37,504,505,525,539,543,558,572],{"__ignoreMap":77},[81,506,507,509,511,513,515,517,519,521,523],{"class":83,"line":84},[81,508,88],{"class":87},[81,510,92],{"class":91},[81,512,96],{"class":95},[81,514,100],{"class":99},[81,516,103],{"class":95},[81,518,106],{"class":99},[81,520,103],{"class":95},[81,522,111],{"class":99},[81,524,114],{"class":95},[81,526,527,529,531,533,535,537],{"class":83,"line":117},[81,528,120],{"class":87},[81,530,92],{"class":91},[81,532,126],{"class":125},[81,534,129],{"class":95},[81,536,133],{"class":132},[81,538,136],{"class":95},[81,540,541],{"class":83,"line":139},[81,542,143],{"emptyLinePlaceholder":142},[81,544,545,547,549,551,553,555],{"class":83,"line":146},[81,546,149],{"class":125},[81,548,129],{"class":95},[81,550,154],{"class":125},[81,552,129],{"class":95},[81,554,24],{"class":132},[81,556,557],{"class":95},"))\n",[81,559,560,562,564,566,568,570],{"class":83,"line":168},[81,561,149],{"class":125},[81,563,129],{"class":95},[81,565,154],{"class":125},[81,567,129],{"class":95},[81,569,24],{"class":132},[81,571,557],{"class":95},[81,573,574,576,578,580,582,584],{"class":83,"line":186},[81,575,149],{"class":125},[81,577,129],{"class":95},[81,579,154],{"class":125},[81,581,129],{"class":95},[81,583,24],{"class":132},[81,585,557],{"class":95},[14,587,369],{},[72,589,591],{"className":74,"code":590,"language":76,"meta":77,"style":77},"10\n20\n30\n",[37,592,593,598,603],{"__ignoreMap":77},[81,594,595],{"class":83,"line":84},[81,596,597],{"class":99},"10\n",[81,599,600],{"class":83,"line":117},[81,601,602],{"class":99},"20\n",[81,604,605],{"class":83,"line":139},[81,606,607],{"class":99},"30\n",[14,609,610,611,482],{},"After the last value, there is nothing left to return. At that point, Python raises ",[37,612,243],{},[72,614,616],{"className":74,"code":615,"language":76,"meta":77,"style":77},"numbers = [10, 20, 30]\niterator = iter(numbers)\n\nprint(next(iterator))\nprint(next(iterator))\nprint(next(iterator))\nprint(next(iterator))  # no more items\n",[37,617,618,638,652,656,670,684,698],{"__ignoreMap":77},[81,619,620,622,624,626,628,630,632,634,636],{"class":83,"line":84},[81,621,88],{"class":87},[81,623,92],{"class":91},[81,625,96],{"class":95},[81,627,100],{"class":99},[81,629,103],{"class":95},[81,631,106],{"class":99},[81,633,103],{"class":95},[81,635,111],{"class":99},[81,637,114],{"class":95},[81,639,640,642,644,646,648,650],{"class":83,"line":117},[81,641,120],{"class":87},[81,643,92],{"class":91},[81,645,126],{"class":125},[81,647,129],{"class":95},[81,649,133],{"class":132},[81,651,136],{"class":95},[81,653,654],{"class":83,"line":139},[81,655,143],{"emptyLinePlaceholder":142},[81,657,658,660,662,664,666,668],{"class":83,"line":146},[81,659,149],{"class":125},[81,661,129],{"class":95},[81,663,154],{"class":125},[81,665,129],{"class":95},[81,667,24],{"class":132},[81,669,557],{"class":95},[81,671,672,674,676,678,680,682],{"class":83,"line":168},[81,673,149],{"class":125},[81,675,129],{"class":95},[81,677,154],{"class":125},[81,679,129],{"class":95},[81,681,24],{"class":132},[81,683,557],{"class":95},[81,685,686,688,690,692,694,696],{"class":83,"line":186},[81,687,149],{"class":125},[81,689,129],{"class":95},[81,691,154],{"class":125},[81,693,129],{"class":95},[81,695,24],{"class":132},[81,697,557],{"class":95},[81,699,701,703,705,707,709,711,713],{"class":83,"line":700},7,[81,702,149],{"class":125},[81,704,129],{"class":95},[81,706,154],{"class":125},[81,708,129],{"class":95},[81,710,24],{"class":132},[81,712,161],{"class":95},[81,714,715],{"class":164},"  # no more items\n",[14,717,718],{},"This causes:",[72,720,722],{"className":74,"code":721,"language":76,"meta":77,"style":77},"StopIteration\n",[37,723,724],{"__ignoreMap":77},[81,725,726],{"class":83,"line":84},[81,727,721],{"class":728},"sZMiF",[14,730,731,732,482],{},"If you want a short definition page, see ",[478,733,735],{"href":734},"\u002Fglossary\u002Fwhat-is-an-iterator-in-python\u002F","what is an iterator in Python",[67,737,739],{"id":738},"iterable-vs-iterator","Iterable vs iterator",[14,741,742],{},"These two terms are related, but they are not the same.",[30,744,745,750],{},[33,746,16,747,749],{},[18,748,20],{}," is the object you can loop over",[33,751,16,752,754],{},[18,753,24],{}," is the object that produces items during the loop",[14,756,757],{},"For example:",[72,759,761],{"className":74,"code":760,"language":76,"meta":77,"style":77},"numbers = [1, 2, 3]\n\nprint(hasattr(numbers, \"__iter__\"))\nprint(hasattr(numbers, \"__next__\"))\n",[37,762,763,786,790,814],{"__ignoreMap":77},[81,764,765,767,769,771,774,776,779,781,784],{"class":83,"line":84},[81,766,88],{"class":87},[81,768,92],{"class":91},[81,770,96],{"class":95},[81,772,773],{"class":99},"1",[81,775,103],{"class":95},[81,777,778],{"class":99}," 2",[81,780,103],{"class":95},[81,782,783],{"class":99}," 3",[81,785,114],{"class":95},[81,787,788],{"class":83,"line":117},[81,789,143],{"emptyLinePlaceholder":142},[81,791,792,794,796,799,801,803,805,807,810,812],{"class":83,"line":139},[81,793,149],{"class":125},[81,795,129],{"class":95},[81,797,798],{"class":125},"hasattr",[81,800,129],{"class":95},[81,802,133],{"class":132},[81,804,103],{"class":95},[81,806,317],{"class":305},[81,808,809],{"class":309},"__iter__",[81,811,306],{"class":305},[81,813,557],{"class":95},[81,815,816,818,820,822,824,826,828,830,833,835],{"class":83,"line":146},[81,817,149],{"class":125},[81,819,129],{"class":95},[81,821,798],{"class":125},[81,823,129],{"class":95},[81,825,133],{"class":132},[81,827,103],{"class":95},[81,829,317],{"class":305},[81,831,832],{"class":309},"__next__",[81,834,306],{"class":305},[81,836,557],{"class":95},[14,838,369],{},[72,840,842],{"className":74,"code":841,"language":76,"meta":77,"style":77},"True\nFalse\n",[37,843,844,850],{"__ignoreMap":77},[81,845,846],{"class":83,"line":84},[81,847,849],{"class":848},"s39Yj","True\n",[81,851,852],{"class":83,"line":117},[81,853,854],{"class":848},"False\n",[14,856,857],{},"A list is iterable, but it is not usually an iterator.",[14,859,860],{},"Now look at an iterator created from that list:",[72,862,864],{"className":74,"code":863,"language":76,"meta":77,"style":77},"numbers = [1, 2, 3]\niterator = iter(numbers)\n\nprint(hasattr(iterator, \"__iter__\"))\nprint(hasattr(iterator, \"__next__\"))\n",[37,865,866,886,900,904,926],{"__ignoreMap":77},[81,867,868,870,872,874,876,878,880,882,884],{"class":83,"line":84},[81,869,88],{"class":87},[81,871,92],{"class":91},[81,873,96],{"class":95},[81,875,773],{"class":99},[81,877,103],{"class":95},[81,879,778],{"class":99},[81,881,103],{"class":95},[81,883,783],{"class":99},[81,885,114],{"class":95},[81,887,888,890,892,894,896,898],{"class":83,"line":117},[81,889,120],{"class":87},[81,891,92],{"class":91},[81,893,126],{"class":125},[81,895,129],{"class":95},[81,897,133],{"class":132},[81,899,136],{"class":95},[81,901,902],{"class":83,"line":139},[81,903,143],{"emptyLinePlaceholder":142},[81,905,906,908,910,912,914,916,918,920,922,924],{"class":83,"line":146},[81,907,149],{"class":125},[81,909,129],{"class":95},[81,911,798],{"class":125},[81,913,129],{"class":95},[81,915,24],{"class":132},[81,917,103],{"class":95},[81,919,317],{"class":305},[81,921,809],{"class":309},[81,923,306],{"class":305},[81,925,557],{"class":95},[81,927,928,930,932,934,936,938,940,942,944,946],{"class":83,"line":168},[81,929,149],{"class":125},[81,931,129],{"class":95},[81,933,798],{"class":125},[81,935,129],{"class":95},[81,937,24],{"class":132},[81,939,103],{"class":95},[81,941,317],{"class":305},[81,943,832],{"class":309},[81,945,306],{"class":305},[81,947,557],{"class":95},[14,949,369],{},[72,951,953],{"className":74,"code":952,"language":76,"meta":77,"style":77},"True\nTrue\n",[37,954,955,959],{"__ignoreMap":77},[81,956,957],{"class":83,"line":84},[81,958,849],{"class":848},[81,960,961],{"class":83,"line":117},[81,962,849],{"class":848},[14,964,965],{},"This shows that the iterator can both be iterated over and provide the next value.",[14,967,968,969,971],{},"Also, calling ",[37,970,207],{}," on an iterator usually returns the same iterator:",[72,973,975],{"className":74,"code":974,"language":76,"meta":77,"style":77},"numbers = [1, 2, 3]\niterator = iter(numbers)\n\nprint(iter(iterator) is iterator)\n",[37,976,977,997,1011,1015],{"__ignoreMap":77},[81,978,979,981,983,985,987,989,991,993,995],{"class":83,"line":84},[81,980,88],{"class":87},[81,982,92],{"class":91},[81,984,96],{"class":95},[81,986,773],{"class":99},[81,988,103],{"class":95},[81,990,778],{"class":99},[81,992,103],{"class":95},[81,994,783],{"class":99},[81,996,114],{"class":95},[81,998,999,1001,1003,1005,1007,1009],{"class":83,"line":117},[81,1000,120],{"class":87},[81,1002,92],{"class":91},[81,1004,126],{"class":125},[81,1006,129],{"class":95},[81,1008,133],{"class":132},[81,1010,136],{"class":95},[81,1012,1013],{"class":83,"line":139},[81,1014,143],{"emptyLinePlaceholder":142},[81,1016,1017,1019,1021,1024,1026,1028,1031,1034,1037],{"class":83,"line":146},[81,1018,149],{"class":125},[81,1020,129],{"class":95},[81,1022,1023],{"class":125},"iter",[81,1025,129],{"class":95},[81,1027,24],{"class":132},[81,1029,1030],{"class":95},")",[81,1032,1033],{"class":342}," is",[81,1035,1036],{"class":132}," iterator",[81,1038,136],{"class":95},[14,1040,369],{},[72,1042,1043],{"className":74,"code":849,"language":76,"meta":77,"style":77},[37,1044,1045],{"__ignoreMap":77},[81,1046,1047],{"class":83,"line":84},[81,1048,849],{"class":848},[67,1050,226,1052,229,1054,232],{"id":1051},"how-iter-and-next-work",[37,1053,207],{},[37,1055,46],{},[14,1057,1058],{},"These two functions are the core of Python's iteration system.",[1060,1061,1063],"h3",{"id":1062},"iterobject",[37,1064,1065],{},"iter(object)",[14,1067,1068,1070],{},[37,1069,1065],{}," asks Python for an iterator for that object.",[14,1072,288],{},[72,1074,1076],{"className":74,"code":1075,"language":76,"meta":77,"style":77},"text = \"abc\"\niterator = iter(text)\n\nprint(next(iterator))\nprint(next(iterator))\nprint(next(iterator))\n",[37,1077,1078,1093,1108,1112,1126,1140],{"__ignoreMap":77},[81,1079,1080,1083,1085,1087,1090],{"class":83,"line":84},[81,1081,1082],{"class":87},"text ",[81,1084,92],{"class":91},[81,1086,317],{"class":305},[81,1088,1089],{"class":309},"abc",[81,1091,1092],{"class":305},"\"\n",[81,1094,1095,1097,1099,1101,1103,1106],{"class":83,"line":117},[81,1096,120],{"class":87},[81,1098,92],{"class":91},[81,1100,126],{"class":125},[81,1102,129],{"class":95},[81,1104,1105],{"class":132},"text",[81,1107,136],{"class":95},[81,1109,1110],{"class":83,"line":139},[81,1111,143],{"emptyLinePlaceholder":142},[81,1113,1114,1116,1118,1120,1122,1124],{"class":83,"line":146},[81,1115,149],{"class":125},[81,1117,129],{"class":95},[81,1119,154],{"class":125},[81,1121,129],{"class":95},[81,1123,24],{"class":132},[81,1125,557],{"class":95},[81,1127,1128,1130,1132,1134,1136,1138],{"class":83,"line":168},[81,1129,149],{"class":125},[81,1131,129],{"class":95},[81,1133,154],{"class":125},[81,1135,129],{"class":95},[81,1137,24],{"class":132},[81,1139,557],{"class":95},[81,1141,1142,1144,1146,1148,1150,1152],{"class":83,"line":186},[81,1143,149],{"class":125},[81,1145,129],{"class":95},[81,1147,154],{"class":125},[81,1149,129],{"class":95},[81,1151,24],{"class":132},[81,1153,557],{"class":95},[14,1155,369],{},[72,1157,1159],{"className":74,"code":1158,"language":76,"meta":77,"style":77},"a\nb\nc\n",[37,1160,1161,1166,1171],{"__ignoreMap":77},[81,1162,1163],{"class":83,"line":84},[81,1164,1165],{"class":87},"a\n",[81,1167,1168],{"class":83,"line":117},[81,1169,1170],{"class":87},"b\n",[81,1172,1173],{"class":83,"line":139},[81,1174,1175],{"class":87},"c\n",[1060,1177,1179],{"id":1178},"nextiterator",[37,1180,1181],{},"next(iterator)",[14,1183,1184,1186],{},[37,1185,1181],{}," gets the next item from the iterator.",[14,1188,1189,1190,482],{},"If there are no items left, Python raises ",[37,1191,243],{},[72,1193,1195],{"className":74,"code":1194,"language":76,"meta":77,"style":77},"text = \"ab\"\niterator = iter(text)\n\nprint(next(iterator))\nprint(next(iterator))\nprint(next(iterator))\n",[37,1196,1197,1210,1224,1228,1242,1256],{"__ignoreMap":77},[81,1198,1199,1201,1203,1205,1208],{"class":83,"line":84},[81,1200,1082],{"class":87},[81,1202,92],{"class":91},[81,1204,317],{"class":305},[81,1206,1207],{"class":309},"ab",[81,1209,1092],{"class":305},[81,1211,1212,1214,1216,1218,1220,1222],{"class":83,"line":117},[81,1213,120],{"class":87},[81,1215,92],{"class":91},[81,1217,126],{"class":125},[81,1219,129],{"class":95},[81,1221,1105],{"class":132},[81,1223,136],{"class":95},[81,1225,1226],{"class":83,"line":139},[81,1227,143],{"emptyLinePlaceholder":142},[81,1229,1230,1232,1234,1236,1238,1240],{"class":83,"line":146},[81,1231,149],{"class":125},[81,1233,129],{"class":95},[81,1235,154],{"class":125},[81,1237,129],{"class":95},[81,1239,24],{"class":132},[81,1241,557],{"class":95},[81,1243,1244,1246,1248,1250,1252,1254],{"class":83,"line":168},[81,1245,149],{"class":125},[81,1247,129],{"class":95},[81,1249,154],{"class":125},[81,1251,129],{"class":95},[81,1253,24],{"class":132},[81,1255,557],{"class":95},[81,1257,1258,1260,1262,1264,1266,1268],{"class":83,"line":186},[81,1259,149],{"class":125},[81,1261,129],{"class":95},[81,1263,154],{"class":125},[81,1265,129],{"class":95},[81,1267,24],{"class":132},[81,1269,557],{"class":95},[14,1271,1272,1273,1275],{},"This raises ",[37,1274,243],{}," on the third call.",[14,1277,1278,1279,229,1282,1285],{},"You can handle that yourself with ",[37,1280,1281],{},"try",[37,1283,1284],{},"except",":",[72,1287,1289],{"className":74,"code":1288,"language":76,"meta":77,"style":77},"text = \"ab\"\niterator = iter(text)\n\ntry:\n    while True:\n        print(next(iterator))\nexcept StopIteration:\n    print(\"Iterator is finished\")\n",[37,1290,1291,1303,1317,1321,1327,1337,1352,1361],{"__ignoreMap":77},[81,1292,1293,1295,1297,1299,1301],{"class":83,"line":84},[81,1294,1082],{"class":87},[81,1296,92],{"class":91},[81,1298,317],{"class":305},[81,1300,1207],{"class":309},[81,1302,1092],{"class":305},[81,1304,1305,1307,1309,1311,1313,1315],{"class":83,"line":117},[81,1306,120],{"class":87},[81,1308,92],{"class":91},[81,1310,126],{"class":125},[81,1312,129],{"class":95},[81,1314,1105],{"class":132},[81,1316,136],{"class":95},[81,1318,1319],{"class":83,"line":139},[81,1320,143],{"emptyLinePlaceholder":142},[81,1322,1323,1325],{"class":83,"line":146},[81,1324,1281],{"class":342},[81,1326,354],{"class":95},[81,1328,1329,1332,1335],{"class":83,"line":168},[81,1330,1331],{"class":342},"    while",[81,1333,1334],{"class":848}," True",[81,1336,354],{"class":95},[81,1338,1339,1342,1344,1346,1348,1350],{"class":83,"line":186},[81,1340,1341],{"class":125},"        print",[81,1343,129],{"class":95},[81,1345,154],{"class":125},[81,1347,129],{"class":95},[81,1349,24],{"class":132},[81,1351,557],{"class":95},[81,1353,1354,1356,1359],{"class":83,"line":700},[81,1355,1284],{"class":342},[81,1357,1358],{"class":728}," StopIteration",[81,1360,354],{"class":95},[81,1362,1364,1366,1368,1370,1373,1375],{"class":83,"line":1363},8,[81,1365,359],{"class":125},[81,1367,129],{"class":95},[81,1369,306],{"class":305},[81,1371,1372],{"class":309},"Iterator is finished",[81,1374,306],{"class":305},[81,1376,136],{"class":95},[14,1378,369],{},[72,1380,1382],{"className":74,"code":1381,"language":76,"meta":77,"style":77},"a\nb\nIterator is finished\n",[37,1383,1384,1388,1392],{"__ignoreMap":77},[81,1385,1386],{"class":83,"line":84},[81,1387,1165],{"class":87},[81,1389,1390],{"class":83,"line":117},[81,1391,1170],{"class":87},[81,1393,1394,1397,1400],{"class":83,"line":139},[81,1395,1396],{"class":87},"Iterator ",[81,1398,1399],{"class":91},"is",[81,1401,1402],{"class":87}," finished\n",[14,1404,1405,1406,482],{},"If you want to learn more about this exception, see ",[478,1407,1409],{"href":1408},"\u002Ferrors\u002Fstopiteration-exception-in-python-explained\u002F","StopIteration exception in Python explained",[67,1411,226,1413,1415],{"id":1412},"how-for-loops-use-iterators",[37,1414,39],{}," loops use iterators",[14,1417,1418,1419,1421],{},"A ",[37,1420,39],{}," loop does this behind the scenes:",[1423,1424,1425,1431,1436],"ol",{},[33,1426,1427,1428,1430],{},"Calls ",[37,1429,207],{}," on the object",[33,1432,1433,1434],{},"Repeatedly calls ",[37,1435,46],{},[33,1437,1438,1439,1441],{},"Stops when ",[37,1440,243],{}," is raised",[14,1443,1444],{},"This means code like this:",[72,1446,1448],{"className":74,"code":1447,"language":76,"meta":77,"style":77},"numbers = [10, 20, 30]\n\nfor number in numbers:\n    print(number)\n",[37,1449,1450,1470,1474,1488],{"__ignoreMap":77},[81,1451,1452,1454,1456,1458,1460,1462,1464,1466,1468],{"class":83,"line":84},[81,1453,88],{"class":87},[81,1455,92],{"class":91},[81,1457,96],{"class":95},[81,1459,100],{"class":99},[81,1461,103],{"class":95},[81,1463,106],{"class":99},[81,1465,103],{"class":95},[81,1467,111],{"class":99},[81,1469,114],{"class":95},[81,1471,1472],{"class":83,"line":117},[81,1473,143],{"emptyLinePlaceholder":142},[81,1475,1476,1478,1481,1483,1486],{"class":83,"line":139},[81,1477,39],{"class":342},[81,1479,1480],{"class":87}," number ",[81,1482,348],{"class":342},[81,1484,1485],{"class":87}," numbers",[81,1487,354],{"class":95},[81,1489,1490,1492,1494,1497],{"class":83,"line":146},[81,1491,359],{"class":125},[81,1493,129],{"class":95},[81,1495,1496],{"class":132},"number",[81,1498,136],{"class":95},[14,1500,1501],{},"works roughly like this:",[72,1503,1505],{"className":74,"code":1504,"language":76,"meta":77,"style":77},"numbers = [10, 20, 30]\niterator = iter(numbers)\n\nwhile True:\n    try:\n        number = next(iterator)\n        print(number)\n    except StopIteration:\n        break\n",[37,1506,1507,1527,1541,1545,1554,1561,1577,1587,1596],{"__ignoreMap":77},[81,1508,1509,1511,1513,1515,1517,1519,1521,1523,1525],{"class":83,"line":84},[81,1510,88],{"class":87},[81,1512,92],{"class":91},[81,1514,96],{"class":95},[81,1516,100],{"class":99},[81,1518,103],{"class":95},[81,1520,106],{"class":99},[81,1522,103],{"class":95},[81,1524,111],{"class":99},[81,1526,114],{"class":95},[81,1528,1529,1531,1533,1535,1537,1539],{"class":83,"line":117},[81,1530,120],{"class":87},[81,1532,92],{"class":91},[81,1534,126],{"class":125},[81,1536,129],{"class":95},[81,1538,133],{"class":132},[81,1540,136],{"class":95},[81,1542,1543],{"class":83,"line":139},[81,1544,143],{"emptyLinePlaceholder":142},[81,1546,1547,1550,1552],{"class":83,"line":146},[81,1548,1549],{"class":342},"while",[81,1551,1334],{"class":848},[81,1553,354],{"class":95},[81,1555,1556,1559],{"class":83,"line":168},[81,1557,1558],{"class":342},"    try",[81,1560,354],{"class":95},[81,1562,1563,1566,1568,1571,1573,1575],{"class":83,"line":186},[81,1564,1565],{"class":87},"        number ",[81,1567,92],{"class":91},[81,1569,1570],{"class":125}," next",[81,1572,129],{"class":95},[81,1574,24],{"class":132},[81,1576,136],{"class":95},[81,1578,1579,1581,1583,1585],{"class":83,"line":700},[81,1580,1341],{"class":125},[81,1582,129],{"class":95},[81,1584,1496],{"class":132},[81,1586,136],{"class":95},[81,1588,1589,1592,1594],{"class":83,"line":1363},[81,1590,1591],{"class":342},"    except",[81,1593,1358],{"class":728},[81,1595,354],{"class":95},[81,1597,1599],{"class":83,"line":1598},9,[81,1600,1601],{"class":342},"        break\n",[14,1603,1604],{},"Output for both:",[72,1606,1607],{"className":74,"code":590,"language":76,"meta":77,"style":77},[37,1608,1609,1613,1617],{"__ignoreMap":77},[81,1610,1611],{"class":83,"line":84},[81,1612,597],{"class":99},[81,1614,1615],{"class":83,"line":117},[81,1616,602],{"class":99},[81,1618,1619],{"class":83,"line":139},[81,1620,607],{"class":99},[14,1622,1623,1624,1626],{},"You do not need to write loops this way in normal code. But understanding it makes ",[37,1625,39],{}," loops much easier to understand.",[14,1628,1629,1630,482],{},"If you want a full beginner guide, see ",[478,1631,1633],{"href":1632},"\u002Flearn\u002Fpython-for-loops-explained\u002F","Python for loops explained",[67,1635,1637],{"id":1636},"examples-of-iterable-objects","Examples of iterable objects",[14,1639,1640],{},"Here are some common iterable objects in Python.",[1060,1642,1644],{"id":1643},"lists-and-tuples","Lists and tuples",[72,1646,1648],{"className":74,"code":1647,"language":76,"meta":77,"style":77},"items = [1, 2, 3]\nfor item in items:\n    print(item)\n\nvalues = (4, 5, 6)\nfor value in values:\n    print(value)\n",[37,1649,1650,1671,1685,1696,1700,1725,1739],{"__ignoreMap":77},[81,1651,1652,1655,1657,1659,1661,1663,1665,1667,1669],{"class":83,"line":84},[81,1653,1654],{"class":87},"items ",[81,1656,92],{"class":91},[81,1658,96],{"class":95},[81,1660,773],{"class":99},[81,1662,103],{"class":95},[81,1664,778],{"class":99},[81,1666,103],{"class":95},[81,1668,783],{"class":99},[81,1670,114],{"class":95},[81,1672,1673,1675,1678,1680,1683],{"class":83,"line":117},[81,1674,39],{"class":342},[81,1676,1677],{"class":87}," item ",[81,1679,348],{"class":342},[81,1681,1682],{"class":87}," items",[81,1684,354],{"class":95},[81,1686,1687,1689,1691,1694],{"class":83,"line":139},[81,1688,359],{"class":125},[81,1690,129],{"class":95},[81,1692,1693],{"class":132},"item",[81,1695,136],{"class":95},[81,1697,1698],{"class":83,"line":146},[81,1699,143],{"emptyLinePlaceholder":142},[81,1701,1702,1705,1707,1710,1713,1715,1718,1720,1723],{"class":83,"line":168},[81,1703,1704],{"class":87},"values ",[81,1706,92],{"class":91},[81,1708,1709],{"class":95}," (",[81,1711,1712],{"class":99},"4",[81,1714,103],{"class":95},[81,1716,1717],{"class":99}," 5",[81,1719,103],{"class":95},[81,1721,1722],{"class":99}," 6",[81,1724,136],{"class":95},[81,1726,1727,1729,1732,1734,1737],{"class":83,"line":186},[81,1728,39],{"class":342},[81,1730,1731],{"class":87}," value ",[81,1733,348],{"class":342},[81,1735,1736],{"class":87}," values",[81,1738,354],{"class":95},[81,1740,1741,1743,1745,1748],{"class":83,"line":700},[81,1742,359],{"class":125},[81,1744,129],{"class":95},[81,1746,1747],{"class":132},"value",[81,1749,136],{"class":95},[1060,1751,1752],{"id":270},"Strings",[72,1754,1756],{"className":74,"code":1755,"language":76,"meta":77,"style":77},"for letter in \"cat\":\n    print(letter)\n",[37,1757,1758,1776],{"__ignoreMap":77},[81,1759,1760,1762,1765,1767,1769,1772,1774],{"class":83,"line":84},[81,1761,39],{"class":342},[81,1763,1764],{"class":87}," letter ",[81,1766,348],{"class":342},[81,1768,317],{"class":305},[81,1770,1771],{"class":309},"cat",[81,1773,306],{"class":305},[81,1775,354],{"class":95},[81,1777,1778,1780,1782,1785],{"class":83,"line":117},[81,1779,359],{"class":125},[81,1781,129],{"class":95},[81,1783,1784],{"class":132},"letter",[81,1786,136],{"class":95},[14,1788,369],{},[72,1790,1792],{"className":74,"code":1791,"language":76,"meta":77,"style":77},"c\na\nt\n",[37,1793,1794,1798,1802],{"__ignoreMap":77},[81,1795,1796],{"class":83,"line":84},[81,1797,1175],{"class":87},[81,1799,1800],{"class":83,"line":117},[81,1801,1165],{"class":87},[81,1803,1804],{"class":83,"line":139},[81,1805,1806],{"class":87},"t\n",[1060,1808,1810],{"id":1809},"dictionaries-and-sets","Dictionaries and sets",[14,1812,1813],{},"A dictionary loops over its keys by default:",[72,1815,1817],{"className":74,"code":1816,"language":76,"meta":77,"style":77},"person = {\"name\": \"Ava\", \"age\": 25}\n\nfor key in person:\n    print(key)\n",[37,1818,1819,1862,1866,1880],{"__ignoreMap":77},[81,1820,1821,1824,1826,1829,1831,1834,1836,1838,1840,1843,1845,1847,1849,1852,1854,1856,1859],{"class":83,"line":84},[81,1822,1823],{"class":87},"person ",[81,1825,92],{"class":91},[81,1827,1828],{"class":95}," {",[81,1830,306],{"class":305},[81,1832,1833],{"class":309},"name",[81,1835,306],{"class":305},[81,1837,1285],{"class":95},[81,1839,317],{"class":305},[81,1841,1842],{"class":309},"Ava",[81,1844,306],{"class":305},[81,1846,103],{"class":95},[81,1848,317],{"class":305},[81,1850,1851],{"class":309},"age",[81,1853,306],{"class":305},[81,1855,1285],{"class":95},[81,1857,1858],{"class":99}," 25",[81,1860,1861],{"class":95},"}\n",[81,1863,1864],{"class":83,"line":117},[81,1865,143],{"emptyLinePlaceholder":142},[81,1867,1868,1870,1873,1875,1878],{"class":83,"line":139},[81,1869,39],{"class":342},[81,1871,1872],{"class":87}," key ",[81,1874,348],{"class":342},[81,1876,1877],{"class":87}," person",[81,1879,354],{"class":95},[81,1881,1882,1884,1886,1889],{"class":83,"line":146},[81,1883,359],{"class":125},[81,1885,129],{"class":95},[81,1887,1888],{"class":132},"key",[81,1890,136],{"class":95},[14,1892,1893],{},"A set is also iterable:",[72,1895,1897],{"className":74,"code":1896,"language":76,"meta":77,"style":77},"numbers = {1, 2, 3}\n\nfor number in numbers:\n    print(number)\n",[37,1898,1899,1919,1923,1935],{"__ignoreMap":77},[81,1900,1901,1903,1905,1907,1909,1911,1913,1915,1917],{"class":83,"line":84},[81,1902,88],{"class":87},[81,1904,92],{"class":91},[81,1906,1828],{"class":95},[81,1908,773],{"class":99},[81,1910,103],{"class":95},[81,1912,778],{"class":99},[81,1914,103],{"class":95},[81,1916,783],{"class":99},[81,1918,1861],{"class":95},[81,1920,1921],{"class":83,"line":117},[81,1922,143],{"emptyLinePlaceholder":142},[81,1924,1925,1927,1929,1931,1933],{"class":83,"line":139},[81,1926,39],{"class":342},[81,1928,1480],{"class":87},[81,1930,348],{"class":342},[81,1932,1485],{"class":87},[81,1934,354],{"class":95},[81,1936,1937,1939,1941,1943],{"class":83,"line":146},[81,1938,359],{"class":125},[81,1940,129],{"class":95},[81,1942,1496],{"class":132},[81,1944,136],{"class":95},[1060,1946,1948,282],{"id":1947},"range-objects",[37,1949,281],{},[14,1951,1952,1954],{},[37,1953,281],{}," is iterable, which is why it works well in loops.",[72,1956,1958],{"className":74,"code":1957,"language":76,"meta":77,"style":77},"for number in range(3):\n    print(number)\n",[37,1959,1960,1979],{"__ignoreMap":77},[81,1961,1962,1964,1966,1968,1971,1973,1976],{"class":83,"line":84},[81,1963,39],{"class":342},[81,1965,1480],{"class":87},[81,1967,348],{"class":342},[81,1969,1970],{"class":125}," range",[81,1972,129],{"class":95},[81,1974,1975],{"class":99},"3",[81,1977,1978],{"class":95},"):\n",[81,1980,1981,1983,1985,1987],{"class":83,"line":117},[81,1982,359],{"class":125},[81,1984,129],{"class":95},[81,1986,1496],{"class":132},[81,1988,136],{"class":95},[14,1990,369],{},[72,1992,1994],{"className":74,"code":1993,"language":76,"meta":77,"style":77},"0\n1\n2\n",[37,1995,1996,2001,2006],{"__ignoreMap":77},[81,1997,1998],{"class":83,"line":84},[81,1999,2000],{"class":99},"0\n",[81,2002,2003],{"class":83,"line":117},[81,2004,2005],{"class":99},"1\n",[81,2007,2008],{"class":83,"line":139},[81,2009,2010],{"class":99},"2\n",[14,2012,2013,2014,482],{},"You can learn more on the ",[478,2015,2017],{"href":2016},"\u002Freference\u002Fpython-range-function-explained\u002F","Python range() function explained",[1060,2019,2021],{"id":2020},"files-opened-for-reading","Files opened for reading",[14,2023,2024],{},"Files are iterable too. Python can read them one line at a time.",[72,2026,2028],{"className":74,"code":2027,"language":76,"meta":77,"style":77},"with open(\"example.txt\", \"r\") as file:\n    for line in file:\n        print(line.strip())\n",[37,2029,2030,2067,2081],{"__ignoreMap":77},[81,2031,2032,2035,2038,2040,2042,2045,2047,2049,2051,2054,2056,2058,2061,2065],{"class":83,"line":84},[81,2033,2034],{"class":342},"with",[81,2036,2037],{"class":125}," open",[81,2039,129],{"class":95},[81,2041,306],{"class":305},[81,2043,2044],{"class":309},"example.txt",[81,2046,306],{"class":305},[81,2048,103],{"class":95},[81,2050,317],{"class":305},[81,2052,2053],{"class":309},"r",[81,2055,306],{"class":305},[81,2057,1030],{"class":95},[81,2059,2060],{"class":342}," as",[81,2062,2064],{"class":2063},"sMMDD"," file",[81,2066,354],{"class":95},[81,2068,2069,2072,2075,2077,2079],{"class":83,"line":117},[81,2070,2071],{"class":342},"    for",[81,2073,2074],{"class":87}," line ",[81,2076,348],{"class":342},[81,2078,2064],{"class":2063},[81,2080,354],{"class":95},[81,2082,2083,2085,2087,2089,2091,2094],{"class":83,"line":139},[81,2084,1341],{"class":125},[81,2086,129],{"class":95},[81,2088,83],{"class":132},[81,2090,482],{"class":95},[81,2092,2093],{"class":132},"strip",[81,2095,2096],{"class":95},"())\n",[14,2098,2099],{},"This is useful because it reads values one at a time instead of loading everything at once.",[67,2101,2103],{"id":2102},"when-iterators-are-useful","When iterators are useful",[14,2105,2106],{},"Iterators are helpful when you want to work with data step by step.",[14,2108,2109],{},"Common uses:",[30,2111,2112,2115,2118,2121],{},[33,2113,2114],{},"Reading values one at a time",[33,2116,2117],{},"Working with large data without loading everything at once",[33,2119,2120],{},"Building custom classes that support loops",[33,2122,2123],{},"Understanding generators more easily",[14,2125,2126,2127,2131],{},"A very common real-world example is a generator. Generators are a special kind of iterator, so learning this topic makes ",[478,2128,2130],{"href":2129},"\u002Flearn\u002Fgenerators-in-python-explained\u002F","generators in Python explained"," much easier to understand.",[67,2133,2135],{"id":2134},"beginner-mistakes-to-avoid","Beginner mistakes to avoid",[14,2137,2138],{},"Here are some common problems beginners run into.",[1060,2140,2142,2143,2145],{"id":2141},"using-next-on-a-list-instead-of-on-an-iterator","Using ",[37,2144,46],{}," on a list instead of on an iterator",[14,2147,2148],{},"This is wrong:",[72,2150,2152],{"className":74,"code":2151,"language":76,"meta":77,"style":77},"numbers = [10, 20, 30]\nprint(next(numbers))\n",[37,2153,2154,2174],{"__ignoreMap":77},[81,2155,2156,2158,2160,2162,2164,2166,2168,2170,2172],{"class":83,"line":84},[81,2157,88],{"class":87},[81,2159,92],{"class":91},[81,2161,96],{"class":95},[81,2163,100],{"class":99},[81,2165,103],{"class":95},[81,2167,106],{"class":99},[81,2169,103],{"class":95},[81,2171,111],{"class":99},[81,2173,114],{"class":95},[81,2175,2176,2178,2180,2182,2184,2186],{"class":83,"line":117},[81,2177,149],{"class":125},[81,2179,129],{"class":95},[81,2181,154],{"class":125},[81,2183,129],{"class":95},[81,2185,133],{"class":132},[81,2187,557],{"class":95},[14,2189,2190,2191,2193],{},"A list is iterable, but it is not an iterator. You need ",[37,2192,207],{}," first:",[72,2195,2197],{"className":74,"code":2196,"language":76,"meta":77,"style":77},"numbers = [10, 20, 30]\niterator = iter(numbers)\n\nprint(next(iterator))\n",[37,2198,2199,2219,2233,2237],{"__ignoreMap":77},[81,2200,2201,2203,2205,2207,2209,2211,2213,2215,2217],{"class":83,"line":84},[81,2202,88],{"class":87},[81,2204,92],{"class":91},[81,2206,96],{"class":95},[81,2208,100],{"class":99},[81,2210,103],{"class":95},[81,2212,106],{"class":99},[81,2214,103],{"class":95},[81,2216,111],{"class":99},[81,2218,114],{"class":95},[81,2220,2221,2223,2225,2227,2229,2231],{"class":83,"line":117},[81,2222,120],{"class":87},[81,2224,92],{"class":91},[81,2226,126],{"class":125},[81,2228,129],{"class":95},[81,2230,133],{"class":132},[81,2232,136],{"class":95},[81,2234,2235],{"class":83,"line":139},[81,2236,143],{"emptyLinePlaceholder":142},[81,2238,2239,2241,2243,2245,2247,2249],{"class":83,"line":146},[81,2240,149],{"class":125},[81,2242,129],{"class":95},[81,2244,154],{"class":125},[81,2246,129],{"class":95},[81,2248,24],{"class":132},[81,2250,557],{"class":95},[1060,2252,2254],{"id":2253},"thinking-every-iterable-is-already-an-iterator","Thinking every iterable is already an iterator",[14,2256,2257,2258,2261],{},"Objects like lists, strings, and tuples are iterable, but they do not usually have ",[37,2259,2260],{},"__next__()"," directly.",[14,2263,2264],{},"Check it:",[72,2266,2268],{"className":74,"code":2267,"language":76,"meta":77,"style":77},"text = \"hello\"\nprint(hasattr(text, \"__next__\"))\n",[37,2269,2270,2283],{"__ignoreMap":77},[81,2271,2272,2274,2276,2278,2281],{"class":83,"line":84},[81,2273,1082],{"class":87},[81,2275,92],{"class":91},[81,2277,317],{"class":305},[81,2279,2280],{"class":309},"hello",[81,2282,1092],{"class":305},[81,2284,2285,2287,2289,2291,2293,2295,2297,2299,2301,2303],{"class":83,"line":117},[81,2286,149],{"class":125},[81,2288,129],{"class":95},[81,2290,798],{"class":125},[81,2292,129],{"class":95},[81,2294,1105],{"class":132},[81,2296,103],{"class":95},[81,2298,317],{"class":305},[81,2300,832],{"class":309},[81,2302,306],{"class":305},[81,2304,557],{"class":95},[14,2306,369],{},[72,2308,2309],{"className":74,"code":854,"language":76,"meta":77,"style":77},[37,2310,2311],{"__ignoreMap":77},[81,2312,2313],{"class":83,"line":84},[81,2314,854],{"class":848},[1060,2316,2318],{"id":2317},"forgetting-that-iterators-get-used-up","Forgetting that iterators get used up",[14,2320,2321],{},"Once you consume an iterator, it does not automatically restart.",[72,2323,2325],{"className":74,"code":2324,"language":76,"meta":77,"style":77},"numbers = [1, 2, 3]\niterator = iter(numbers)\n\nfor item in iterator:\n    print(item)\n\nfor item in iterator:\n    print(item)  # nothing prints\n",[37,2326,2327,2347,2361,2365,2377,2387,2391,2403],{"__ignoreMap":77},[81,2328,2329,2331,2333,2335,2337,2339,2341,2343,2345],{"class":83,"line":84},[81,2330,88],{"class":87},[81,2332,92],{"class":91},[81,2334,96],{"class":95},[81,2336,773],{"class":99},[81,2338,103],{"class":95},[81,2340,778],{"class":99},[81,2342,103],{"class":95},[81,2344,783],{"class":99},[81,2346,114],{"class":95},[81,2348,2349,2351,2353,2355,2357,2359],{"class":83,"line":117},[81,2350,120],{"class":87},[81,2352,92],{"class":91},[81,2354,126],{"class":125},[81,2356,129],{"class":95},[81,2358,133],{"class":132},[81,2360,136],{"class":95},[81,2362,2363],{"class":83,"line":139},[81,2364,143],{"emptyLinePlaceholder":142},[81,2366,2367,2369,2371,2373,2375],{"class":83,"line":146},[81,2368,39],{"class":342},[81,2370,1677],{"class":87},[81,2372,348],{"class":342},[81,2374,1036],{"class":87},[81,2376,354],{"class":95},[81,2378,2379,2381,2383,2385],{"class":83,"line":168},[81,2380,359],{"class":125},[81,2382,129],{"class":95},[81,2384,1693],{"class":132},[81,2386,136],{"class":95},[81,2388,2389],{"class":83,"line":186},[81,2390,143],{"emptyLinePlaceholder":142},[81,2392,2393,2395,2397,2399,2401],{"class":83,"line":700},[81,2394,39],{"class":342},[81,2396,1677],{"class":87},[81,2398,348],{"class":342},[81,2400,1036],{"class":87},[81,2402,354],{"class":95},[81,2404,2405,2407,2409,2411,2413],{"class":83,"line":1363},[81,2406,359],{"class":125},[81,2408,129],{"class":95},[81,2410,1693],{"class":132},[81,2412,1030],{"class":95},[81,2414,2415],{"class":164},"  # nothing prints\n",[14,2417,2418],{},"If you want to loop again, create a new iterator:",[72,2420,2422],{"className":74,"code":2421,"language":76,"meta":77,"style":77},"numbers = [1, 2, 3]\n\nfor item in iter(numbers):\n    print(item)\n\nfor item in iter(numbers):\n    print(item)\n",[37,2423,2424,2444,2448,2464,2474,2478,2494],{"__ignoreMap":77},[81,2425,2426,2428,2430,2432,2434,2436,2438,2440,2442],{"class":83,"line":84},[81,2427,88],{"class":87},[81,2429,92],{"class":91},[81,2431,96],{"class":95},[81,2433,773],{"class":99},[81,2435,103],{"class":95},[81,2437,778],{"class":99},[81,2439,103],{"class":95},[81,2441,783],{"class":99},[81,2443,114],{"class":95},[81,2445,2446],{"class":83,"line":117},[81,2447,143],{"emptyLinePlaceholder":142},[81,2449,2450,2452,2454,2456,2458,2460,2462],{"class":83,"line":139},[81,2451,39],{"class":342},[81,2453,1677],{"class":87},[81,2455,348],{"class":342},[81,2457,126],{"class":125},[81,2459,129],{"class":95},[81,2461,133],{"class":132},[81,2463,1978],{"class":95},[81,2465,2466,2468,2470,2472],{"class":83,"line":146},[81,2467,359],{"class":125},[81,2469,129],{"class":95},[81,2471,1693],{"class":132},[81,2473,136],{"class":95},[81,2475,2476],{"class":83,"line":168},[81,2477,143],{"emptyLinePlaceholder":142},[81,2479,2480,2482,2484,2486,2488,2490,2492],{"class":83,"line":186},[81,2481,39],{"class":342},[81,2483,1677],{"class":87},[81,2485,348],{"class":342},[81,2487,126],{"class":125},[81,2489,129],{"class":95},[81,2491,133],{"class":132},[81,2493,1978],{"class":95},[81,2495,2496,2498,2500,2502],{"class":83,"line":700},[81,2497,359],{"class":125},[81,2499,129],{"class":95},[81,2501,1693],{"class":132},[81,2503,136],{"class":95},[1060,2505,2507,2508,2510,2511,2513],{"id":2506},"not-handling-stopiteration-when-calling-next-manually","Not handling ",[37,2509,243],{}," when calling ",[37,2512,46],{}," manually",[14,2515,2516,2517,2519],{},"If you call ",[37,2518,46],{}," yourself, you may need to handle the end of the iterator.",[72,2521,2523],{"className":74,"code":2522,"language":76,"meta":77,"style":77},"numbers = [1, 2]\niterator = iter(numbers)\n\ntry:\n    print(next(iterator))\n    print(next(iterator))\n    print(next(iterator))\nexcept StopIteration:\n    print(\"No more items\")\n",[37,2524,2525,2541,2555,2559,2565,2579,2593,2607,2615],{"__ignoreMap":77},[81,2526,2527,2529,2531,2533,2535,2537,2539],{"class":83,"line":84},[81,2528,88],{"class":87},[81,2530,92],{"class":91},[81,2532,96],{"class":95},[81,2534,773],{"class":99},[81,2536,103],{"class":95},[81,2538,778],{"class":99},[81,2540,114],{"class":95},[81,2542,2543,2545,2547,2549,2551,2553],{"class":83,"line":117},[81,2544,120],{"class":87},[81,2546,92],{"class":91},[81,2548,126],{"class":125},[81,2550,129],{"class":95},[81,2552,133],{"class":132},[81,2554,136],{"class":95},[81,2556,2557],{"class":83,"line":139},[81,2558,143],{"emptyLinePlaceholder":142},[81,2560,2561,2563],{"class":83,"line":146},[81,2562,1281],{"class":342},[81,2564,354],{"class":95},[81,2566,2567,2569,2571,2573,2575,2577],{"class":83,"line":168},[81,2568,359],{"class":125},[81,2570,129],{"class":95},[81,2572,154],{"class":125},[81,2574,129],{"class":95},[81,2576,24],{"class":132},[81,2578,557],{"class":95},[81,2580,2581,2583,2585,2587,2589,2591],{"class":83,"line":186},[81,2582,359],{"class":125},[81,2584,129],{"class":95},[81,2586,154],{"class":125},[81,2588,129],{"class":95},[81,2590,24],{"class":132},[81,2592,557],{"class":95},[81,2594,2595,2597,2599,2601,2603,2605],{"class":83,"line":700},[81,2596,359],{"class":125},[81,2598,129],{"class":95},[81,2600,154],{"class":125},[81,2602,129],{"class":95},[81,2604,24],{"class":132},[81,2606,557],{"class":95},[81,2608,2609,2611,2613],{"class":83,"line":1363},[81,2610,1284],{"class":342},[81,2612,1358],{"class":728},[81,2614,354],{"class":95},[81,2616,2617,2619,2621,2623,2626,2628],{"class":83,"line":1598},[81,2618,359],{"class":125},[81,2620,129],{"class":95},[81,2622,306],{"class":305},[81,2624,2625],{"class":309},"No more items",[81,2627,306],{"class":305},[81,2629,136],{"class":95},[14,2631,369],{},[72,2633,2635],{"className":74,"code":2634,"language":76,"meta":77,"style":77},"1\n2\nNo more items\n",[37,2636,2637,2641,2645],{"__ignoreMap":77},[81,2638,2639],{"class":83,"line":84},[81,2640,2005],{"class":99},[81,2642,2643],{"class":83,"line":117},[81,2644,2010],{"class":99},[81,2646,2647],{"class":83,"line":139},[81,2648,2649],{"class":87},"No more items\n",[67,2651,2653],{"id":2652},"useful-checks-when-debugging","Useful checks when debugging",[14,2655,2656],{},"If you are not sure whether an object is iterable or an iterator, these checks can help:",[72,2658,2660],{"className":74,"code":2659,"language":76,"meta":77,"style":77},"obj = [1, 2, 3]\n\nprint(type(obj))\nprint(hasattr(obj, \"__iter__\"))\nprint(hasattr(obj, \"__next__\"))\n",[37,2661,2662,2683,2687,2703,2725],{"__ignoreMap":77},[81,2663,2664,2667,2669,2671,2673,2675,2677,2679,2681],{"class":83,"line":84},[81,2665,2666],{"class":87},"obj ",[81,2668,92],{"class":91},[81,2670,96],{"class":95},[81,2672,773],{"class":99},[81,2674,103],{"class":95},[81,2676,778],{"class":99},[81,2678,103],{"class":95},[81,2680,783],{"class":99},[81,2682,114],{"class":95},[81,2684,2685],{"class":83,"line":117},[81,2686,143],{"emptyLinePlaceholder":142},[81,2688,2689,2691,2693,2696,2698,2701],{"class":83,"line":139},[81,2690,149],{"class":125},[81,2692,129],{"class":95},[81,2694,2695],{"class":728},"type",[81,2697,129],{"class":95},[81,2699,2700],{"class":132},"obj",[81,2702,557],{"class":95},[81,2704,2705,2707,2709,2711,2713,2715,2717,2719,2721,2723],{"class":83,"line":146},[81,2706,149],{"class":125},[81,2708,129],{"class":95},[81,2710,798],{"class":125},[81,2712,129],{"class":95},[81,2714,2700],{"class":132},[81,2716,103],{"class":95},[81,2718,317],{"class":305},[81,2720,809],{"class":309},[81,2722,306],{"class":305},[81,2724,557],{"class":95},[81,2726,2727,2729,2731,2733,2735,2737,2739,2741,2743,2745],{"class":83,"line":168},[81,2728,149],{"class":125},[81,2730,129],{"class":95},[81,2732,798],{"class":125},[81,2734,129],{"class":95},[81,2736,2700],{"class":132},[81,2738,103],{"class":95},[81,2740,317],{"class":305},[81,2742,832],{"class":309},[81,2744,306],{"class":305},[81,2746,557],{"class":95},[14,2748,2749],{},"You can also try creating an iterator:",[72,2751,2753],{"className":74,"code":2752,"language":76,"meta":77,"style":77},"obj = [1, 2, 3]\niterator = iter(obj)\n\nprint(type(iterator))\nprint(next(iterator))\n",[37,2754,2755,2775,2789,2793,2807],{"__ignoreMap":77},[81,2756,2757,2759,2761,2763,2765,2767,2769,2771,2773],{"class":83,"line":84},[81,2758,2666],{"class":87},[81,2760,92],{"class":91},[81,2762,96],{"class":95},[81,2764,773],{"class":99},[81,2766,103],{"class":95},[81,2768,778],{"class":99},[81,2770,103],{"class":95},[81,2772,783],{"class":99},[81,2774,114],{"class":95},[81,2776,2777,2779,2781,2783,2785,2787],{"class":83,"line":117},[81,2778,120],{"class":87},[81,2780,92],{"class":91},[81,2782,126],{"class":125},[81,2784,129],{"class":95},[81,2786,2700],{"class":132},[81,2788,136],{"class":95},[81,2790,2791],{"class":83,"line":139},[81,2792,143],{"emptyLinePlaceholder":142},[81,2794,2795,2797,2799,2801,2803,2805],{"class":83,"line":146},[81,2796,149],{"class":125},[81,2798,129],{"class":95},[81,2800,2695],{"class":728},[81,2802,129],{"class":95},[81,2804,24],{"class":132},[81,2806,557],{"class":95},[81,2808,2809,2811,2813,2815,2817,2819],{"class":83,"line":168},[81,2810,149],{"class":125},[81,2812,129],{"class":95},[81,2814,154],{"class":125},[81,2816,129],{"class":95},[81,2818,24],{"class":132},[81,2820,557],{"class":95},[14,2822,2823],{},"Useful commands:",[30,2825,2826,2831,2836,2840,2845],{},[33,2827,2828],{},[37,2829,2830],{},"type(obj)",[33,2832,2833],{},[37,2834,2835],{},"iter(obj)",[33,2837,2838],{},[37,2839,1181],{},[33,2841,2842],{},[37,2843,2844],{},"hasattr(obj, '__iter__')",[33,2846,2847],{},[37,2848,2849],{},"hasattr(obj, '__next__')",[67,2851,2853],{"id":2852},"faq","FAQ",[1060,2855,2857],{"id":2856},"is-every-iterable-also-an-iterator","Is every iterable also an iterator?",[14,2859,2860,2861,2863],{},"No. Many objects like lists and strings are iterable, but you must call ",[37,2862,207],{}," to get an iterator from them.",[1060,2865,2867],{"id":2866},"what-happens-when-an-iterator-runs-out-of-values","What happens when an iterator runs out of values?",[14,2869,2870,2871,2873,2874,2876],{},"Python raises ",[37,2872,243],{},". A ",[37,2875,39],{}," loop handles this automatically.",[1060,2878,2880],{"id":2879},"can-i-loop-over-the-same-iterator-twice","Can I loop over the same iterator twice?",[14,2882,2883],{},"Usually no. Once an iterator is exhausted, it does not start over unless you create a new one.",[1060,2885,2887],{"id":2886},"why-should-beginners-learn-this","Why should beginners learn this?",[14,2889,2890,2891,2893],{},"It helps you understand ",[37,2892,39],{}," loops, generators, files, and many common Python tools.",[67,2895,2897],{"id":2896},"see-also","See also",[30,2899,2900,2904,2909,2913,2917,2922],{},[33,2901,2902],{},[478,2903,1633],{"href":1632},[33,2905,2906],{},[478,2907,2908],{"href":2129},"Generators in Python explained",[33,2910,2911],{},[478,2912,2017],{"href":2016},[33,2914,2915],{},[478,2916,1409],{"href":1408},[33,2918,2919],{},[478,2920,2921],{"href":480},"What is an iterable in Python",[33,2923,2924],{},[478,2925,2926],{"href":734},"What is an iterator in Python",[14,2928,2929],{},"If this topic makes sense now, the best next step is to learn generators. They are one of the most common real-world examples of iterators in Python.",[2931,2932,2933],"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 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 .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 .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 .sZMiF, html code.shiki .sZMiF{--shiki-light:#E2931D;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .s39Yj, html code.shiki .s39Yj{--shiki-light:#39ADB5;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sMMDD, html code.shiki .sMMDD{--shiki-light:#90A4AE;--shiki-default:#E36209;--shiki-dark:#FFAB70}",{"title":77,"searchDepth":117,"depth":117,"links":2935},[2936,2937,2938,2939,2940,2941,2946,2948,2956,2957,2965,2966,2972],{"id":69,"depth":117,"text":70},{"id":214,"depth":117,"text":215},{"id":247,"depth":117,"text":248},{"id":485,"depth":117,"text":486},{"id":738,"depth":117,"text":739},{"id":1051,"depth":117,"text":2942,"children":2943},"How iter() and next() work",[2944,2945],{"id":1062,"depth":139,"text":1065},{"id":1178,"depth":139,"text":1181},{"id":1412,"depth":117,"text":2947},"How for loops use iterators",{"id":1636,"depth":117,"text":1637,"children":2949},[2950,2951,2952,2953,2955],{"id":1643,"depth":139,"text":1644},{"id":270,"depth":139,"text":1752},{"id":1809,"depth":139,"text":1810},{"id":1947,"depth":139,"text":2954},"range() objects",{"id":2020,"depth":139,"text":2021},{"id":2102,"depth":117,"text":2103},{"id":2134,"depth":117,"text":2135,"children":2958},[2959,2961,2962,2963],{"id":2141,"depth":139,"text":2960},"Using next() on a list instead of on an iterator",{"id":2253,"depth":139,"text":2254},{"id":2317,"depth":139,"text":2318},{"id":2506,"depth":139,"text":2964},"Not handling StopIteration when calling next() manually",{"id":2652,"depth":117,"text":2653},{"id":2852,"depth":117,"text":2853,"children":2967},[2968,2969,2970,2971],{"id":2856,"depth":139,"text":2857},{"id":2866,"depth":139,"text":2867},{"id":2879,"depth":139,"text":2880},{"id":2886,"depth":139,"text":2887},{"id":2896,"depth":117,"text":2897},"Master iterators and iterable objects explained in our comprehensive Python beginner guide.","md",{},"\u002Flearn\u002Fiterators-and-iterable-objects-explained",{"title":5,"description":2973},"learn\u002Fiterators-and-iterable-objects-explained","eNEaRPXL4e21qjVTG5gEn07yLtxa5ri_otVFqJLjC-M",1777585497288]