學習python,從入門到放棄(16)

2022-10-09 04:12:11 字數 1993 閱讀 7387

迭代其實就是更新換代,每一次迭代的過程都需要依賴於上一次的結果。

# 單純的迴圈 不是迭代

import time

while true:

print(123)

time.sleep(0.1)

# 屬於迭代

n = 1

while true:

print(n)

n += 1

# 迭代取值

l1 = [11, 22, 33, 44, 55]

n = 0

while n < len(l1):

print(l1[n])

n += 1

python 中可迭代物件並不是指某種具體的資料型別,它是指儲存了元素的乙個容器物件,且容器中的元素可以通過__iter__方法訪問。

屬於可迭代物件的有字串、列表、字典、元組、集合、檔案物件

可迭代物件呼叫__iter__方法之後生成的結果就是迭代器物件。迭代器物件的明顯的特徵就是可以呼叫__iter__方法和__next__方法.

迭代器物件能夠極大的節省儲存空間,用的時候可以從中取出很多資料。有了迭代器物件才出現了針對字典和集合的迭代取值操作。

迭代器物件取值時可以直接呼叫__next__方法,但是如果取完了就會直接報錯。這就涉及到 for 迴圈的底層用法了,其實迭代器就是 for 迴圈的原理,for 迴圈就是它的簡便寫法。

s = '123'

res = s.__iter__()

n = 0

while n < len(s):

print(res.__next__())

n += 1

'''for 變數名 in 可迭代物件:

迴圈體**

1.會將in後面的資料呼叫__iter__()變成迭代器物件

為什麼檔案物件也可以for迴圈 因為本身就是迭代器物件 再次呼叫不變

2.針對產生的迭代器物件依次呼叫__next__()方法迭代取值

3.當值取完之後 會自動處理報錯並退出迴圈

'''

許多雙下劃線方法其實都有簡便寫法。

s = '123'

print(s.__iter__()) # print(iter(s)) # print(s.__len__()) # 3

print(len(s)) # 3

這兩個方法和它的簡便寫法的作用是一樣的。

有一些可迭代物件本身也是迭代器物件比如檔案物件,其他可迭代物件都要經過轉化。

可迭代物件的迭代器物件的迭代器物件,還是可迭代物件的迭代器物件。

s = '123'

res = s.__iter__()

res1 = s.__iter__().__iter__().__iter__()

print(res, res1) #

迭代器物件取值時,要將可迭代物件先轉換成迭代器物件才能用__next__方法迭代,否則直接使用可迭代物件,每次迭代都會是同乙個值。

s = '123'

print(s.__iter__().__next__()) # 1

print(s.__iter__().__next__()) # 1

print(s.__iter__().__next__()) # 1

res = s.__iter__() # 變成迭代器物件

print(res.__iter__().__next__()) # 1

print(res.__iter__().__next__()) # 2

print(res.__iter__().__next__()) # 3

正式學習了迭代的相關知識,並且還學習了處理 bug 的方法。

Python從入門到放棄 列表(1)

今天學習到了列表,順便做一下筆記和複習。刪 del list index list.remove val list.pop index 1 obj可選引數,要移除列表元素的索引值,預設為 index 1,刪除最後乙個列表值 改 list index newvalue 查 list index 排序 ...

python 從入門到放棄

本人所有關於python的內容均為學習期間的整理的筆記,希望可以給學習者帶來些許幫助!不過一入it深似海!準備入行者請做好充分的心理準備!計算機的知識跟新迭代速度很快,不學習就會被淘汰!如果你打算入行然後找乙份安穩的工作安度餘生,那麼我還是建議去考公務員吧!這個行業可能並不適合你!有不少的人可能都覺...

學習python,從入門到放棄(6)

昨日留下了乙個猜年齡的 作業用於鞏固前面所學知識,今日給定了標準答案。我也給出了我的答案。對比來看老師的 簡潔明瞭,用稍少的 完成了目標,我的 雖然有些冗長而且有重複的 塊,但是新增了年齡隨機數還有在輸入y n的時候考慮了輸入別的內容的情況。型別轉換 str 可以轉換所有基本資料型別。索引與切片 字...