av一区二区在线观看_亚洲男人的天堂网站_日韩亚洲视频_在线成人免费_欧美日韩精品免费观看视频_久草视

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

python - for循環(huán)的疑問(wèn),有例子

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

問(wèn)題描述

看了幾個(gè)例子,不太理解for循環(huán)的工作原理,例如:

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

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

for string in strings

這個(gè)沒(méi)理解什么意思。想問(wèn)下,for循環(huán)的工作原理是什么樣的,請(qǐng)指導(dǎo)。

問(wèn)題解答

回答1:

第一個(gè)就是遍歷range得到的數(shù)字集合,第二個(gè)就是遍歷strings這個(gè)集合

回答2:

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

>>> 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’]查看這兩個(gè)的共有屬性>>> 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__’}

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

>>> 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函數(shù)返回的對(duì)象我們稱之為iterator,iterator只需要做一件事,那就是調(diào)用next(iterator)方法,返回下一個(gè)元素。

舉例:

>>> 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

當(dāng)?shù)髟贈(zèng)]有元素可以迭代時(shí)會(huì)引發(fā)一個(gè)異常。那么在這里我給出itrable和iterator的定義。iterable:可以傳給iter并返回一個(gè)iteratot的對(duì)象iterator:可以傳給next函數(shù)并返回下一個(gè)迭代元素的對(duì)象,并在迭代結(jié)束引發(fā)一個(gè)異常。

因此,對(duì)于你提的例子我們使用迭代器來(lái)重新定義一下。

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

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

標(biāo)簽: Python 編程
主站蜘蛛池模板: www.黄色在线观看 | 亚洲一区二区久久久 | 一区二区三区四区不卡 | 女同久久另类99精品国产 | 国产精品揄拍一区二区 | 97超在线视频 | 国产在线aa| 女生羞羞视频 | 美女啪啪国产 | 国产中文字幕在线观看 | 99热热 | 亚洲自拍偷拍欧美 | 亚洲成人毛片 | 国产成人免费视频网站高清观看视频 | 蜜桃在线视频 | 97精品超碰一区二区三区 | 成人影院网站ww555久久精品 | 免费看片在线播放 | 九九九色 | 国产乱码精品一区二区三区忘忧草 | 精品国产一区二区在线 | 免费a在线| 九九九色 | 成人h免费观看视频 | 九九热这里只有精品在线观看 | 久久黄视频 | 亚洲国产黄| 淫片专区| 91精品国产91久久久久久最新 | 国产精品成人一区二区三区 | 精品久久久久久久久久久 | 精品欧美乱码久久久久久 | 国产成人免费视频网站高清观看视频 | 中文字幕一区二区三区精彩视频 | 日韩欧美黄色 | 日韩av大片免费看 | 欧美精品一区二区三区蜜桃视频 | 色小姐综合网 | 一区免费观看 | 亚洲黄色视屏 | 精品久久久久一区二区国产 |