<strike id="ddzbl"><span id="ddzbl"><em id="ddzbl"></em></span></strike>
    <font id="ddzbl"><sub id="ddzbl"><mark id="ddzbl"></mark></sub></font>

      <address id="ddzbl"></address>
      <listing id="ddzbl"></listing>

        <track id="ddzbl"><span id="ddzbl"><progress id="ddzbl"></progress></span></track>

        首頁技術文章正文

        人工智能之如何使用Python集合

        更新時間:2017-12-26 來源:黑馬程序員 瀏覽量:

        定義集合

        集合就像籃子,你可以放進和取出東西,可以是同一類的東西,也可以是不同類的?;旧?,它是個讓你收集東西的存儲結構。

        比如你有一個車的類型(car),創建了幾種車,想把這些車放在一起又容易找到,就是運用集合非常好的場景。

        集合存在于內存中。你不需要創建集合或者任何架板,這些都是現成的。只要有個變量就可以往里面放車子了。完了之后你就可以根據名字或者索引(在集合中的參數)把他們取出。

        ython提供了許多自建類型歸屬于集合類,但是沒有一個叫collection的類型,他們是lists,mappings,和sets。

        list

        列表:list是Python內置的一個數據類型。list是可變的允許添加同一類型或不同類型的元素,類似于其他語言中的指針。

        下面的例子是創建列表并添加元素:

        alist = ["item1", "item2", 4]

        注意這個列表成分混雜,包含了字符串和整數類型。

        要取回列表中的元素,只需引用該元素的索引序號。Python列表序號是從零開始的,如果我要最后一個元素,它是第3位,我需要用2來索引:

        alist[2]

        > 4

        系統返回了4。取列表中的元素時,只要從它的位置減去1就得到正確的索引序號。

        檢查列表長度用len命令:

        len(alist)

        > 3

        向列表添加元素用append()函數:

        alist.append(False)

        len(alist)

        > 4

        我們增加了一位列表長度,添加了一個數據類型—布爾類型。列表并沒有表示任何不滿。

        我們可以調用remove()移除列表元素:

        alist.remove("item2")

        remove()沒有返回參數,列表會被更新,現在它包含三個元素:

        ['item1', 4, False]

        有幾種方法將元素從列表中取出。我們前面說過用索引訪問元素,如果我訪問索引2,將會得到元素3。

        thevalue = alist[2]

        print(thevalue)

        > False

        上面的代碼為我們復制了元素,元素還在列表中,列表的長度不會受到影響。

        然而我們用pop(), 在得到元素的同時將元素移除了列表:

        thevalue = alist.pop(1) print(thevalue)

        > 4

        print("after pop", alist)

        > ['item1', False]

        列表也可以被排序,我們有包含字符串的列表:

        alpha = ["z", "b", "a", "c"]

        你可以用sort()命令來排序:

        alpha.sort()

        沒有返回值,但alpha已經被排序了,你可以打印出來看看:

        print(alpha)

        ['a', 'b', 'c', 'z']

        元素可以被反序排列,只需引用reverse():

        alpha.reverse

        字符串是列表嗎?

        字符串與列表有很多相似之處,但字符串是不可改動的,而列表可以隨意修改。

        字符串可以向列表一樣索引。你可以像數列表中元素一樣數出字符串中的字符。

        比如:

        mystring = "The quick brown fox."

        print(len(mystring ))

        > 20

        print(mystring[4])

        > q

        和列表不一樣的是你不能追加字符,也不能更改字符串中特定位置字符。

        我們看一下給特定位置分配字符會出現什么情況:

        mystring[4] = 'z'

        > TypeError: 'str' object does not support item assignment

        根據字符串,可以將它轉化成列表。取上面用到的mystring變量,我們用split(),它會在空格斷開:

        stringlist = mystring.split()

        stringlist

        > ['The', 'quick', 'brown', 'fox.']

        type(stringlist)

        >

        每個單詞都變成了列表中的元素,我們也清楚的看到類型變為列表。

        如果字符串沒有空格我們也可以轉換,但結果如何呢,看看吧:

        mystring2 = "Thequickbrownfox."

        stringlist2 = mystring2.split()

        stringlist2

        > ['Thequickbrownfox.']

        type(stringlist2)

        >

        我們還是得到了一個列表,單只有一個元素。在這個例子中,這個轉換沒有多大用處。

        mappings

        mapping也是內置類型,只在字典中使用。字典是鍵/值對應的,不同于列表,我們不用序號索引,代之的是字典的鍵(key)。

        類似列表創建字典用鍵/值成對而不是單一元素,給個例子:

        mydictionary = {"item1":45, "item2":76, "item3":145}

        每個鍵/值用冒號分開,前面是鍵后面是值。在第一個元素中,item1是鍵,45是值。同時注意我們用大括號來包住元素。

        當從字典中取元素時,序號不可用了,那我們就該想到鍵。如果要item2,我們這樣做:

        mydictionary["item2]

        > 76

        和列表一樣,可以查看字典的長度:

        len(mydictionary)

        > 3

        改變item2的值,可以直接給他賦值:

        mydictionary["item2] = 100

        增加元素也是直接賦值:

        mydictionary["item62"] = 433

        item62現在就存在于字典了,字典長度加1。

        根據鍵可以刪除字典元素:

        del mydictionary["item2"]

        前面提到字典是鍵/值成對出現,如果我們只要鍵可以這樣做:

        mydictionary.keys()

        > dict_keys(['item3', 'item1', 'item62'])

        訪問值也是同樣的方法:

        mydictionary.values()

        > dict_values([145, 45, 433])

        Sets

        set是無序的集合,不能有重復的元素,也不能排序,sort()是不能使用的。

        同列表相比set驗證元素是否存在會更快。

        創建一個set:

        myset = {3, 4, 5, 1}

        或者用set語句來轉化已存在的類型:

        multistory = [0,1,5,4,3,7,6,6]

        myself = set(multistory)

        > {0,1,3,4,5,6,7}

        因為set只能包含唯一的元素,所以重復的6被移除了。從已有數據創建唯一元素集合,set()是個非常好的方法。

        如果我試圖讓移除的6回來,它是不會理會的:

        myself.add(6)

        > {0, 1, 3, 4, 5, 6, 7}

        要移除set中元素需要用remove():

        myself.remove(4)

        set也不支持索引,用序號來訪問,它會返回錯誤:

        myset[2] >TypeError: 'set' object does not support indexing

        set有些獨有的方法,如果你熟悉set的數學方法(difference,intersection和union),會很好用。

        我們從difference開始,假設我有兩個set:

        set1 = {1,3,6,7}

        set2 = {1,3,6,8,10}

        用set1和set2做difference會得到7,7在set1而不在set2。

        set1.difference(set2)

        > {7}

        反過來用set2和set1做對比:

        set2.difference(set1)

        > {8, 10}

        也可以來找它們的相同部分:

        set.intersection(set2)

        > {1, 3, 6}

        最后來看把它們合并起來形成一個新的set:

        set3 = {set1.union(set2)

        > {1, 3, 6, 7, 8, 10}

        新的set包含它們兩個中所有元素。

        總結

        我們看過了list,string(雖然不屬于集合),dictionary和set。學習了它們所有的特定運算和獨有功能。希望這個介紹可以讓你對Python的集合多點認識。


        本文版權歸黑馬程序員人工智能+Python學院所有,歡迎轉載,轉載請注明作者出處。謝謝!


        作者:黑馬程序員人工智能+Python培訓學院


        首發:http://python.itheima.com/


        分享到:
        在線咨詢 我要報名

        CHINESE熟女老女人HD

          <strike id="ddzbl"><span id="ddzbl"><em id="ddzbl"></em></span></strike>
          <font id="ddzbl"><sub id="ddzbl"><mark id="ddzbl"></mark></sub></font>

            <address id="ddzbl"></address>
            <listing id="ddzbl"></listing>

              <track id="ddzbl"><span id="ddzbl"><progress id="ddzbl"></progress></span></track>