国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術文章
文章詳情頁

python - for循環的疑問,有例子

瀏覽:119日期:2022-09-23 14:19:36

問題描述

看了幾個例子,不太理解for循環的工作原理,例如:

for i in range(90,0,-1)

這個是不是就是表示,i從90開始算起,一直算到0結束(不考慮是否滿足條件)

for string in strings

這個沒理解什么意思。想問下,for循環的工作原理是什么樣的,請指導。

問題解答

回答1:

第一個就是遍歷range得到的數字集合,第二個就是遍歷strings這個集合

回答2:

如果你從迭代層面來理解的話可能對于for的工作原理會有更深的理解。首先我們來使用dir查看一下對于range、str這兩個的不一樣的類型有什么共同點。

>>> dir(range)[’__class__’, ’__contains__’, ’__delattr__’, ’__dir__’, ’__doc__’, ’__eq__’, ’__format__’, ’__ge__’, ’__getattribute__’, ’__getitem__’, ’__gt__’, ’__hash__’, ’__init__’, ’__iter__’, ’__le__’, ’__len__’, ’__lt__’, ’__ne__’, ’__new__’, ’__reduce__’, ’__reduce_ex__’, ’__repr__’, ’__reversed__’, ’__setattr__’, ’__sizeof__’, ’__str__’, ’__subclasshook__’, ’count’, ’index’, ’start’, ’step’, ’stop’] >>> dir(str)[’__add__’, ’__class__’, ’__contains__’, ’__delattr__’, ’__dir__’, ’__doc__’, ’__eq__’, ’__format__’, ’__ge__’, ’__getattribute__’, ’__getitem__’, ’__getnewargs__’, ’__gt__’, ’__hash__’, ’__init__’, ’__iter__’, ’__le__’, ’__len__’, ’__lt__’, ’__mod__’, ’__mul__’, ’__ne__’, ’__new__’, ’__reduce__’, ’__reduce_ex__’, ’__repr__’, ’__rmod__’, ’__rmul__’, ’__setattr__’, ’__sizeof__’, ’__str__’, ’__subclasshook__’, ’capitalize’, ’casefold’, ’center’, ’count’, ’encode’, ’endswith’, ’expandtabs’, ’find’, ’format’, ’format_map’, ’index’, ’isalnum’, ’isalpha’, ’isdecimal’, ’isdigit’, ’isidentifier’, ’islower’, ’isnumeric’, ’isprintable’, ’isspace’, ’istitle’, ’isupper’, ’join’, ’ljust’, ’lower’, ’lstrip’, ’maketrans’, ’partition’, ’replace’, ’rfind’, ’rindex’, ’rjust’, ’rpartition’, ’rsplit’, ’rstrip’, ’split’, ’splitlines’, ’startswith’, ’strip’, ’swapcase’, ’title’, ’translate’, ’upper’, ’zfill’]查看這兩個的共有屬性>>> set(dir(range)) & set(dir(str)){’__hash__’, ’__eq__’, ’__contains__’, ’__iter__’, ’__getitem__’, ’count’, ’__lt__’, ’__dir__’, ’__le__’, ’__subclasshook__’, ’__ge__’, ’__sizeof__’, ’__format__’, ’__len__’, ’__ne__’, ’__getattribute__’, ’__delattr__’, ’__reduce_ex__’, ’__gt__’, ’__reduce__’, ’__setattr__’, ’__doc__’, ’__class__’, ’__new__’, ’__repr__’, ’__init__’, ’index’, ’__str__’}

我們關注__iter__屬性,他們兩個都有這個函數,如果你查看其他可以使用for循環迭代的對象,你都可以發現這個特殊方法。實現了這個方法的對象我們稱之為iterable。我們把對象傳給Python內置的iter()方法,會返回一個迭代器,for循環就是使用這個模式來實現適用于所有的對象。比如:

>>> iter([1, 2])<list_iterator object at 0x000001A1141E0668>>>> iter(range(0, 10))<range_iterator object at 0x000001A1124C6BB0>>>> iter('abc')<str_iterator object at 0x000001A1141E0CF8>>>>iter函數返回的對象我們稱之為iterator,iterator只需要做一件事,那就是調用next(iterator)方法,返回下一個元素。

舉例:

>>> t = iter('abc')>>> next(t)’a’>>> next(t)’b’>>> next(t)’c’>>> next(t)Traceback (most recent call last): File '<stdin>', line 1, in <module>StopIteration

當迭代器再沒有元素可以迭代時會引發一個異常。那么在這里我給出itrable和iterator的定義。iterable:可以傳給iter并返回一個iteratot的對象iterator:可以傳給next函數并返回下一個迭代元素的對象,并在迭代結束引發一個異常。

因此,對于你提的例子我們使用迭代器來重新定義一下。

>>> t = iter(range(90, 0, -1))>>> t<range_iterator object at 0x000001A1124C6BB0>>>> next(t)90>>> next(t)89>>> next(t)88

如果你看完答案,能明白的話,請給我反饋一下,謝謝。

標簽: Python 編程
主站蜘蛛池模板: 97在线公开视频 | 国产精品国产三级国产普通 | 久久综合成人网 | 精品一区二区三区三区 | 精品国产一区二区三区国产馆 | 亚洲综合第一欧美日韩中文 | 一区二区中文字幕在线观看 | 又黄又湿又爽吸乳视频 | 中文字幕精品一区二区精品 | 亚洲视频综合网 | 欧美日韩免费做爰视频 | 久久成年人视频 | 免费韩国一级毛片 | 夜鲁夜鲁夜鲁在线观看福利 | 一级aaaaa毛片免费视频 | 九九视频在线 | 国产亚洲欧美日韩综合综合二区 | 亚洲国产日韩欧美一区二区三区 | 性刺激久久久久久久久 | rion美乳弹出来四虎在线观看 | 亚洲精品欧美精品 | 国产一区亚洲 | 欧洲一级毛片 | 欧美一级一毛片 | 高清毛片aaaaaaaaa片 | 俄罗斯一级毛片免费播放 | 日韩激情无码免费毛片 | a级毛片在线免费看 | 男女晚上爱爱的视频在线观看 | 久久综合婷婷 | 日本人一级毛片视频 | 牛人盗摄一区二区三区视频 | 国产亚洲综合成人91精品 | 欧美精品三级在线 | 免费人成在观看 | 久久综久久美利坚合众国 | 国产国产成人精品久久 | 国产美女一级特黄毛片 | 久久久精品在线观看 | 日韩欧美国产精品第一页不卡 | 精品国产午夜久久久久九九 |