国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

[Python] for循環是怎樣工作的?

myeveryheart / 1077人閱讀

摘要:我們把對象傳給內置的方法,會返回一個迭代器,循環就是使用這個模式來實現適用于所有的對象。舉例當迭代器再沒有元素可以迭代時會引發一個異常。因此,對于你提的例子我們使用迭代器來重新定義一下。

如果你從迭代層面來理解的話可能對于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])

>>> iter(range(0, 10))

>>> iter("abc")

>>>
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 "", line 1, in 
StopIteration

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

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

>>> t = iter(range(90, 0, -1))
>>> t

>>> next(t)
90
>>> next(t)
89
>>> next(t)
88

希望看完有所收獲。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/38432.html

相關文章

  • 獨家 | 6種讓Python程序變慢壞習慣

    摘要:假設我們需要在程序中計算一些數字的平方根。此外如果我們需要在程序中多次使用平方根函數,代碼將會更整潔。然而在這個虛構的例子中,只有的年齡超過歲。然后檢查這三個人的年齡是否滿足第二個條件。 作者:?Christopher Tao翻譯:王可汗校對:王雨桐本文約1800字,建議閱讀5分鐘本文...

    xcc3641 評論0 收藏0
  • 可迭代對象和迭代器

    摘要:對于迭代器來說,返回的是它自身,則是返回迭代器中的下一個值,如果沒有值了則拋出一個的異常。有一點繞,我們再來理一理迭代器和可迭代這兩個的差別一個迭代器一定是可迭代對象,因為它一定有方法。而可迭代對象的方法通常會生成一個新的迭代器對象。 for 循環 是我們在 Python 里非常常用的一個語法,但你有沒有思考過 for 循環是怎樣實現的? 如果你以前接觸過 C++,應該會知道類似 fo...

    Kaede 評論0 收藏0
  • python入門正確姿勢,從一無所知到無所不知

    摘要:不同的人的路線圖版本會有所不同。尋找答案從一無所知到無所不知如果你在這個過程中多次遇到困難,在知難而退之前努力嘗試解決問題。并不是成為一個全面的開發人員所需要的唯一技能。首先進行一兩個月的學習階段,然后進入一個月的構建階段。 初級開發者學Python容易陷入茫然,面對市面上種類眾多的編程語言和框架,重要的是堅持自己的選擇,宜精不宜雜。本文是一篇指路文,概述了從編程基礎、引導、文檔閱讀、...

    legendmohe 評論0 收藏0
  • python入門正確姿勢,要永遠做個學習者,但不僅僅只做學習者!

    摘要:總之,要永遠做個學習者,但不僅僅只做學習者了解并踐行學習實踐階段循環任何創造性學科的學習都可以分兩個階段,學習階段和構建階段,彼此不斷重復。 初級開發者學Python容易陷入茫然,面對市面上種類眾多的編程語言和框架,重要的是堅持自己的選擇,宜精不宜雜。本文是一篇指路文,概述了從編程基礎、引導、文檔閱讀、書籍和視頻、源代碼等學習和積累環節,值得初學者參考。 作為一個開發者,為何要選擇Py...

    MarvinZhang 評論0 收藏0
  • [譯]Python面試中8個必考問題

    摘要:因此,當任何由返回的函數被調用時,的值將在附近的范圍進行查找。下面是解決這一問題的一些方法。另外一個解決方案就是創造一個閉包,利用默認函數立即綁定。當缺失時,執行類,字典的實例將自動實例化這個數列。 1、下面這段代碼的輸出結果是什么?請解釋。 def extendList(val, list=[]): list.append(val) return list list...

    warmcheng 評論0 收藏0

發表評論

0條評論

myeveryheart

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<