欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳談python3中用for循環(huán)刪除列表中元素的坑

 更新時間:2018年04月19日 10:43:24   作者:jimmy_gyn  
下面小編就為大家分享一篇詳談python3中用for循環(huán)刪除列表中元素的坑,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

for循環(huán)語句的對象是可迭代對象,可迭代對象需要實現__iter__或iter方法,并返回一個迭代器,什么是迭代器呢?迭代器只需要實現 __next__或next方法。

現在來驗證一下列表為什么支持迭代:

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

結果:

<class 'list_iterator'>
1
2
3

for 語句如何循環(huán)的呢?步驟是:

(1)先判斷對象是否為可迭代對象,不是的話直接報錯,拋出TypeError異常,是的話,調用 __iter__或iter方法,返回一個迭代器

(2)不斷地調用迭代器的__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)

結果:

1
2
4
5
6
[1, 3, 4, 5, 6]

第二個print打印的結果顯然是刪除了元素2的列表,第一個print為什么沒有3呢?因為執(zhí)行for語句時,先生成一個迭代器,再用next方法,按序返回迭代器中的值,當列表中刪除了元素2時,元素3的索引變成了原來元素2的索引,把元素3往前推到了元素2的位置,所以next方法就沒返回值3.在python中,使用iter函數可以獲得有序聚合類型的迭代器,我個人將迭代器理解為帶有next指針的單向鏈表,獲取到的迭代器為鏈表的表頭,表頭內容為空,next指針指向有序聚合類型的第一個元素。

在訪問鏈表最后一個元素的next指針時,python會報錯StopIteration。

以上這篇詳談python3中用for循環(huán)刪除列表中元素的坑就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • python讀取json數據還原表格批量轉換成html

    python讀取json數據還原表格批量轉換成html

    這篇文章主要介紹了python讀取json數據還原表格批量轉換成html,由于需要對ocr識別系統(tǒng)的表格識別結果做驗證,通過返回的json文件結果對比比較麻煩,故需要將json文件里面的識別結果還原為表格做驗證,下面詳細內容需要的小伙伴可以參考一下
    2022-03-03
  • Python基于遞歸算法求最小公倍數和最大公約數示例

    Python基于遞歸算法求最小公倍數和最大公約數示例

    這篇文章主要介紹了Python基于遞歸算法求最小公倍數和最大公約數,結合實例形式分析了Python使用遞歸算法進行數值計算的相關操作技巧,需要的朋友可以參考下
    2018-07-07
  • pyinstaller打包可執(zhí)行文件,存放路徑包含中文無法運行的解決方案

    pyinstaller打包可執(zhí)行文件,存放路徑包含中文無法運行的解決方案

    這篇文章主要介紹了pyinstaller打包可執(zhí)行文件,存放路徑包含中文無法運行的解決方案,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • Python列表操作方法詳解

    Python列表操作方法詳解

    這篇文章主要介紹了Python列表操作方法詳解,需要的朋友可以參考下
    2020-02-02
  • Python辦公自動化處理的10大場景應用示例

    Python辦公自動化處理的10大場景應用示例

    這篇文章主要為大家介紹了Python辦公自動化處理的10大場景應用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-06-06
  • Python?pandas中read_csv參數示例詳解

    Python?pandas中read_csv參數示例詳解

    使用pandas做數據處理的第一步就是讀取數據,數據源可以來自于各種地方,csv文件便是其中之一,下面這篇文章主要給大家介紹了關于Python?pandas中read_csv參數詳解的相關資料,需要的朋友可以參考下
    2023-01-01
  • python實現自動生成C++代碼的代碼生成器

    python實現自動生成C++代碼的代碼生成器

    這篇文章介紹了python實現C++代碼生成器的方法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-07-07
  • Python 列表與鏈表的區(qū)別詳解

    Python 列表與鏈表的區(qū)別詳解

    這篇文章主要介紹了Python 列表與鏈表的區(qū)別詳解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下
    2021-09-09
  • 在python環(huán)境下運用kafka對數據進行實時傳輸的方法

    在python環(huán)境下運用kafka對數據進行實時傳輸的方法

    今天小編就為大家分享一篇在python環(huán)境下運用kafka對數據進行實時傳輸的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-12-12
  • Django restframework 源碼分析之認證詳解

    Django restframework 源碼分析之認證詳解

    這篇文章主要介紹了Django-restframework 源碼分析之認證詳解,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-02-02

最新評論