python中列表,字典等必須要注意的事項

來源:互聯網
上載者:User

標籤:int   err   改變   輸出   during   time   pycharm   ast   pyc   

1.python中的列表不能夠遍曆刪除
 1 #python列表我們不能夠遍曆刪除 2 li = [1, 2, 3, 4, 5, 6] 3 for i in range(len(li)): 4     print(i) 5     del li[i] 6     print(li) 7 # 輸出結果: 8 # Traceback (most recent call last): 9 # 010 # [2, 3, 4, 5, 6]11 #   File "C:/Users/XZB/PycharmProjects/s1/day7/python注意事項.py", line 5, in <module>12 # 113 #     del li[i]14 # [2, 4, 5, 6]15 # IndexError: list assignment index out of range16 # 217 # [2, 4, 6]18 # 3

原因:首先,列表是可變類型的資料,我們每進行一次修改,都會在原資料類型上面進行修改,然而for遍曆有一個機制,在第一次時候,它就已經將需要遍曆多少次等相關儲存起來了,所以後面的遍曆不會再判斷需要進行多少次數,所以,在for遍曆刪除列表中的元素的時候,我們沒遍曆一次,列表中的元素都會改變,然而,for遍曆的機制還是最初的那樣子,所以會產生刪除有誤的問題!

2.python中的字典不能夠遍曆刪除
 1 dic = {‘k1‘ : ‘v1‘, ‘k2‘ : ‘v2‘, ‘a3‘ : ‘v3‘} 2 for i in dic: 3     print(i) 4     if ‘k‘ in i: 5         del dic[i] 6 #輸出結果:Traceback (most recent call last): 7 #          k1 8 #          File "C:/Users/XZB/PycharmProjects/s1/day7/python注意事項.py", line 20, in <module> 9 #          for i in dic:10 #          RuntimeError: dictionary changed size during iteration
如果我們將不含有k的索引值對列印出來,有如下兩種方法:
 1 #方法一 2 dic = {‘k1‘ : ‘v1‘, ‘k2‘ : ‘v2‘, ‘a3‘ : ‘v3‘} 3 dic1 = {} 4 for i in dic: 5     if ‘k‘ not in i: 6         dic1.setdefault(i, dic[i]) 7 dic = dic1 8 print(dic) 9 10 #方法二11 l = []12 dic = {‘k1‘ : ‘v1‘, ‘k2‘ : ‘v2‘, ‘a3‘ : ‘v3‘}13 for i in dic:14     if ‘k‘ in i:15         l.append(i)16 17 for i in l:18     del dic[i]19 20 print(dic)

 

python中列表,字典等必須要注意的事項

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.