python3中用for循環(huán)刪除列表中元素的坑
來源:懂視網(wǎng)
責編:小OO
時間:2020-11-27 14:22:04
python3中用for循環(huán)刪除列表中元素的坑
for循環(huán)語句的對象是可迭代對象,可迭代對象需要實現(xiàn)__iter__或iter方法,并返回一個迭代器,什么是迭代器呢?迭代器只需要實現(xiàn) __next__或next方法。現(xiàn)在來驗證一下列表為什么支持迭代。x = [1,2,3]its = iter(x)# its = x.__iter__()print(type(its))# print(its.__next__())# print(its.__next__())# print(its.__next__())print(next(its))print(next(its))print(next(its))。結(jié)果。<;class ';list_iterator';>;123。for 語句如何循環(huán)的呢?步驟是。
導讀for循環(huán)語句的對象是可迭代對象,可迭代對象需要實現(xiàn)__iter__或iter方法,并返回一個迭代器,什么是迭代器呢?迭代器只需要實現(xiàn) __next__或next方法?,F(xiàn)在來驗證一下列表為什么支持迭代。x = [1,2,3]its = iter(x)# its = x.__iter__()print(type(its))# print(its.__next__())# print(its.__next__())# print(its.__next__())print(next(its))print(next(its))print(next(its))。結(jié)果。<;class ';list_iterator';>;123。for 語句如何循環(huán)的呢?步驟是。
下面為大家分享一篇詳談python3中用for循環(huán)刪除列表中元素的坑,具有很好的參考價值,希望對大家有所幫助。一起過來看看吧
for循環(huán)語句的對象是可迭代對象,可迭代對象需要實現(xiàn)__iter__或iter方法,并返回一個迭代器,什么是迭代器呢?迭代器只需要實現(xiàn) __next__或next方法。
現(xiàn)在來驗證一下列表為什么支持迭代:
x = [1,2,3]
its = iter(x)
# its = x.__iter__()
print(type(its))
# print(its.__next__())
# print(its.__next__())
# print(its.__next__())
print(next(its))
print(next(its))
print(next(its))
結(jié)果:
<class 'list_iterator'>
1
2
3
for 語句如何循環(huán)的呢?步驟是:
(1)先判斷對象是否為可迭代對象,不是的話直接報錯,拋出TypeError異常,是的話,調(diào)用 __iter__或iter方法,返回一個迭代器
(2)不斷地調(diào)用迭代器的__next__或next方法,每次按序返回迭代器中的一個值
(3)迭代到最后,沒有更多元素了,就拋出異常 StopIteration,這個異常 python 自己會處理,不會暴露給開發(fā)者
list1 = [1,2,3,4,5,6]
for i in list1:
if i == 2:
list1.remove(i)
print(i)
print(list1)
結(jié)果:
1
2
4
5
6
[1, 3, 4, 5, 6]
第二個print打印的結(jié)果顯然是刪除了元素2的列表,第一個print為什么沒有3呢?因為執(zhí)行for語句時,先生成一個迭代器,再用next方法,按序返回迭代器中的值,當列表中刪除了元素2時,元素3的索引變成了原來元素2的索引,把元素3往前推到了元素2的位置,所以next方法就沒返回值3.在python中,使用iter函數(shù)可以獲得有序聚合類型的迭代器,我個人將迭代器理解為帶有next指針的單向鏈表,獲取到的迭代器為鏈表的表頭,表頭內(nèi)容為空,next指針指向有序聚合類型的第一個元素。
在訪問鏈表最后一個元素的next指針時,python會報錯StopIteration。
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com
python3中用for循環(huán)刪除列表中元素的坑
for循環(huán)語句的對象是可迭代對象,可迭代對象需要實現(xiàn)__iter__或iter方法,并返回一個迭代器,什么是迭代器呢?迭代器只需要實現(xiàn) __next__或next方法。現(xiàn)在來驗證一下列表為什么支持迭代。x = [1,2,3]its = iter(x)# its = x.__iter__()print(type(its))# print(its.__next__())# print(its.__next__())# print(its.__next__())print(next(its))print(next(its))print(next(its))。結(jié)果。<;class ';list_iterator';>;123。for 語句如何循環(huán)的呢?步驟是。