最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python的字典和列表的使用中一些需要注意的地方

 更新時(shí)間:2015年04月24日 11:33:54   作者:C Wong  
這篇文章主要介紹了Python的字典和列表的使用中一些需要注意的地方,字典和列表的使用是Python學(xué)習(xí)當(dāng)中的基本功,需要的朋友可以參考下

Python 中有三個(gè)非常好用的數(shù)據(jù)結(jié)構(gòu),列表,元組和字典, 元組是不可變的,列表可以保存任意類型的Python對象,并可以隨意擴(kuò)展沒有大小限制, 字典是一個(gè)key-value的鍵值映射的類型,可以存放任何Python對象,可以嵌套字典, 值可以是字典元組或者字典

這里說是Python 字典和列表的陷阱不如說是Python的一些特性,如果不了解這些特性 就會引發(fā)一些難以尋找的bug

下面我們來介紹這些特性

Python中所有對列表和字典的使用僅僅是對原來對象的引用而不是創(chuàng)建一個(gè)新的對象 如下面代碼:

>>> info = dict(name='cold', blog='www.linuxzen.com') # 創(chuàng)建字典{'name':'cold', 'blog':'www.linuxzen.com'}
>>> info2 = info   # 賦值給info2
>>> info2['name'] = 'cold night'
>>> info
>>> info2
{'blog': 'www.linuxzen.com', 'name': 'cold night'}
>>> info
{'blog': 'www.linuxzen.com', 'name': 'cold night'}
>>> names = ['cold', 'night', 'linuxzen']
>>> names2 = names
>>> names2.append('cold night')
>>> names
['cold', 'night', 'linuxzen', 'cold night']
>>> names2
['cold', 'night', 'linuxzen', 'cold night']

大家看到如果將列表或者字典重新賦值給另外一個(gè)變量并沒有達(dá)到預(yù)想的效果, 我們更改一個(gè)的同時(shí)另外一個(gè)也在同時(shí)更改,如果我們想保留一個(gè)快照,很明顯我們 沒有達(dá)到我們想要的效果,另外還有一種常見的使用,因?yàn)槲覀冎榔胀ㄗ兞總鬟f給 函數(shù),函數(shù)在內(nèi)部更改是不會影響到外部變量的,那么列表和字典呢? 我們來看如下代碼,我們創(chuàng)建一個(gè)函數(shù),是字典就添加一個(gè)鍵和值,是列表就在尾部添加一個(gè)元素

>>> def add_something(info):
...   if type(info) == dict:
...       info['msg'] = 'Hello,'+ info['name']
...   elif type(info) == list:
...       info.append('add to the list')
... 
>>> info = {'name':'cold', 'blog':'www.linuxzen.com'}
>>> add_something(info)
>>> info
{'blog': 'www.linuxzen.com', 'msg': 'Hello,cold', 'name': 'cold'}
>>> names = ['cold', 'night', 'linuxzen.com']
>>> add_something(names)
>>> names
['cold', 'night', 'linuxzen.com', 'add to the list']

如上代碼明顯不是我們想要的結(jié)果,如果這個(gè)列表/字典僅僅用在一個(gè)地方可能不會發(fā)生什么 如果我們其他地方需要同樣的列表進(jìn)行處理,如果你不知道這個(gè)特性就會產(chǎn)生很難尋找的bug 當(dāng)上面并不是我們想要的我們該如何避免上面呢,我們可以對列表/字典做一個(gè)拷貝,而不是 簡單的引用

>>> names = ['cold', 'night', 'linuxzen.com']
>>> names2 = names[:]
>>> names2.append('cold night')
>>> names
['cold', 'night', 'linuxzen.com']
>>> names2
['cold', 'night', 'linuxzen.com', 'cold night']
>>> info = {'name':'cold night', 'blog':'www.linuxzen.com'}
>>> info2 = info.copy()
>>> info2['name'] = 'cold'
>>> info
{'blog': 'www.linuxzen.com', 'name': 'cold night'}
>>> info2
{'blog': 'www.linuxzen.com', 'name': 'cold'}

上面代碼列表使用[:]可以創(chuàng)建一個(gè)列表的副本而不是引用 字典的copy方法同樣可以創(chuàng)建一個(gè)字典的副本而不是引用 這樣就可以避免之前所說的引用的情況

相關(guān)文章

  • python 輸出上個(gè)月的月末日期實(shí)例

    python 輸出上個(gè)月的月末日期實(shí)例

    下面小編就為大家分享一篇python 輸出上個(gè)月的月末日期實(shí)例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-04-04
  • NumPy數(shù)組排序、過濾與隨機(jī)數(shù)生成詳解

    NumPy數(shù)組排序、過濾與隨機(jī)數(shù)生成詳解

    這篇文章主要詳細(xì)給大家介紹了NumPy數(shù)組排序、過濾與隨機(jī)數(shù)生成,文中通過代碼示例給大家講解的非常詳細(xì),對大家學(xué)習(xí)NumPy有一定的幫助,需要的朋友可以參考下
    2024-05-05
  • Apache部署Django項(xiàng)目圖文詳解

    Apache部署Django項(xiàng)目圖文詳解

    這篇文章主要介紹了Apache部署Django項(xiàng)目圖文詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-07-07
  • 淺談TensorFlow之稀疏張量表示

    淺談TensorFlow之稀疏張量表示

    這篇文章主要介紹了淺談TensorFlow之稀疏張量表示,具有很好的參考就價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06
  • Python通過for循環(huán)理解迭代器和生成器實(shí)例詳解

    Python通過for循環(huán)理解迭代器和生成器實(shí)例詳解

    這篇文章主要介紹了Python通過for循環(huán)理解迭代器和生成器,結(jié)合實(shí)例形式詳細(xì)分析了迭代器和生成器的概念、原理、使用方法及相關(guān)操作技巧,需要的朋友可以參考下
    2019-02-02
  • python腳本生成caffe train_list.txt的方法

    python腳本生成caffe train_list.txt的方法

    下面小編就為大家分享一篇python腳本生成caffe train_list.txt的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-04-04
  • python Canny邊緣檢測算法的實(shí)現(xiàn)

    python Canny邊緣檢測算法的實(shí)現(xiàn)

    這篇文章主要介紹了python Canny邊緣檢測算法的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04
  • 極速整理文件Python自動化辦公實(shí)用技巧

    極速整理文件Python自動化辦公實(shí)用技巧

    當(dāng)涉及到自動化辦公和文件整理,Python確實(shí)是一個(gè)強(qiáng)大的工具,在這篇博客文章中,將深入探討極速整理文件!Python自動化辦公新利器這個(gè)話題,并提供更加豐富和全面的示例代碼,以便讀者更好地理解和運(yùn)用這些技巧
    2024-01-01
  • 利用python檢測文本相似性的三種方法

    利用python檢測文本相似性的三種方法

    文本查重,也稱為文本去重,是一項(xiàng)旨在識別文本文檔之間的相似性或重復(fù)性的技術(shù)或任務(wù),它的主要目標(biāo)是確定一個(gè)文本文檔是否包含與其他文檔相似或重復(fù)的內(nèi)容,本文給大家介紹了利用python檢測文本相似性的原理和方法,需要的朋友可以參考下
    2023-11-11
  • 使用python?AI快速比對兩張人臉圖像及遇到的坑

    使用python?AI快速比對兩張人臉圖像及遇到的坑

    這篇文章主要介紹了如何使用python?AI快速比對兩張人臉圖像?實(shí)現(xiàn)過程比較簡單,但是第三方python依賴的安裝過程較為曲折,下面是通過實(shí)踐對比總結(jié)出來的能夠支持的幾個(gè)版本,避免大家踩坑,需要的朋友可以參考下
    2023-02-02

最新評論

全椒县| 衡阳市| 福海县| 察隅县| 云阳县| 嘉禾县| 苏尼特左旗| 绥江县| 乌拉特后旗| 丹江口市| 北票市| 会同县| 育儿| 郎溪县| 罗平县| 天镇县| 长泰县| 临潭县| 乾安县| 通海县| 隆尧县| 五河县| 谷城县| 临潭县| 怀来县| 苍南县| 云梦县| 沙坪坝区| 西乌珠穆沁旗| 巴塘县| 当雄县| 泰来县| 西乌珠穆沁旗| 临桂县| 衡南县| 乐业县| 嘉鱼县| 宜章县| 光山县| 大丰市| 枣强县|