Python學(xué)習(xí)筆記(四)—列表(list)、元組(tuple)和字典(dictionary)、集合(set)

轉(zhuǎn)載請注明出處:http://m.itdecent.cn/p/aa578a7e2fbe
本文出自Shawpoo的簡書
我的博客:CSDN博客

【Python學(xué)習(xí)筆記專欄】:http://blog.csdn.net/column/details/17658.html

除了上篇文章介紹的幾種數(shù)據(jù)類型之外,Python還提供了幾種內(nèi)置的數(shù)據(jù)類型,有列表(list)元組(tuple)、字典(dictionary)集合(set)

一、列表(list)和元組(tuple)

1、list(列表)

列表(list)是Python中最基本的數(shù)據(jù)結(jié)構(gòu)。list是有序的集合,可以存放不同數(shù)據(jù)類型的數(shù)據(jù),并且list中的每個元素的都對應(yīng)著一個索引來標記其位置,且索引從0開始。

  • list的創(chuàng)建
    創(chuàng)建一個list,只要把逗號分隔的不同的數(shù)據(jù)項使用方括號括起來即可。

    list1 = ["Python", "Android", "Java", "C++"]
    list2 = ["Git", "SVN", 2017, 2018]
    list3 = [1, 2, 3, 4, 6 ]
    
  • 訪問list中的元素
    使用索引來訪問列表中的值,索引從0開始,索引的最大值為list的長度-1。

    >>> list1[0] # 訪問list1列表中的第一個元素
    'Python'
    >>> list2[2] #訪問list2列表中的第三個元素
    2017
    

    我們可以通過len()函數(shù)來查看列表的長度,如:

    >>> len(list1)
    4
    >>> len(list3)
    5
    

    訪問列表中最后一個元素,則索引為(列表的長度-1),倒數(shù)第二個的索引為(列表的長度-2),以此類推。 還有一種訪問方式是,索引從-1開始,-2,-3...如:

    >>> list3[len(list3) - 1]
    6
    >>> list1[len(list1) - 1]
    'C++'
    >>> list1[-1]
    'C++'
    

    還有一種訪問方式是索引:的形式,表示訪問該索引(含)之后的所有元素,例如:

    >>> list1[1:]
    ['Android', 'Java', 'C++']
    
  • list增加元素

    list是一個可變的有序的,所以,可以往list中追加元素到末尾:

    >>> list1.append("JavaScript")
    >>> list1
    ['Python', 'Android', 'Java', 'C++', 'JavaScript']
    

    也可以添加元素到指定位置,比如索引為1的位置:

    >>> list1.insert(1, "ios")
    >>> list1
    ['Python', 'ios', 'Android', 'Java', 'C++', 'JavaScript']
    
  • list修改元素
    list中的元素也可以進行修改,通過索引直接進行替換:

    >>> list1[1] = 'Ruby'
    >>> list1
    ['Python', 'Ruby', 'Android', 'Java', 'C++', 'JavaScript']
    
  • list刪除元素
    list中的元素也可以刪除,刪除list中最后一個元素:

    >>> list1.pop()
    'JavaScript'
    >>> list1
    ['Python', 'Ruby', 'Android', 'Java', 'C++']
    

    通過索引進行刪除:

    >>> list1.pop(1)
    'Ruby'
    >>> list1
    ['Python', 'Android', 'Java', 'C++']
    

    根據(jù)內(nèi)容進行刪除:

    >>> list1.remove('C++')
    >>> list1
    ['Python', 'Android', 'Java']
    

    通過關(guān)鍵字def進行刪除:

    >>> del list1[1]
    >>> list1
    ['Python', 'Java']
    
  • list的嵌套
    list的嵌套,即list中的元素也是一個list:

    >>> a = [1, 2, 3]
    >>> b = ['a', 'b', 'c']
    >>> x = [a, b]
    >>> len(x)
    2
    >>> len(x[0])
    3
    >>> x[0]
    [1, 2, 3]
    >>> x[1][0]
    'a'
    
  • list運算符
    list對 +* 的操作符與字符串相似。+ 號用于組合列表,* 號用于重復(fù)列表。

    Python表達式 結(jié)果 描述
    len([1, 2, 3]) 3 list的長度
    [1, 2, 3] + [4, 5, 6] [1, 2, 3, 4, 5, 6] 組合
    ['Hi~'] * 4 ['Hi~', 'Hi~', 'Hi~', 'Hi~'] 重復(fù)
    3 in [1, 2, 3] True 元素是否存在于list中
    for x in [1, 2, 3]: print(x, end=" ") 1 2 3 遍歷list中的元素

2、tuple(元組)

Python的tuple與list類似,不同之處在于tuple中的元素不能進行修改。而且tuple使用小括號,list使用方括號。

  • tuple的創(chuàng)建
    tuple創(chuàng)建很簡單,只需要在括號中添加元素,并使用逗號隔開即可。
    tuple1 =  ("Python", "Android", "Java", "C++")
    tuple2 =  (1, 2, 3, 4, 6 )
    
    創(chuàng)建空的tuple,直接寫小看括號即可:
    tuple3 = ()
    
    創(chuàng)建只有一個元素的tuple,需要在元素后面添加逗號,否則括號會被
    當作運算符使用,我們可以通過 type()函數(shù)來查看類型:
    >>> t1 = (1)
    >>> type(t1)
    <class 'int'>   # 整數(shù)類型
    >>> t2 = (1,)
    >>> type(t2)
    <class 'tuple'>  # tuple類型
    
  • tuple的修改
    tuple與list的最大區(qū)別就是tuple內(nèi)的元素不允許修改:
    >>> t1[0] = 1
    Traceback (most recent call last):
    File "<stdin>", line 1, in <module>
    TypeError: 'tuple' object does not support item assignment
    
    但是我們可以對tuple進行連接組合:
    >>> t1 = (1, 2, 3)
    >>> t2 =('a', 'b', 'c')
    >>> t3 = t1 + t2
    >>> t3
    (1, 2, 3, 'a', 'b', 'c')
    
    tuple中的元素為可變的數(shù)據(jù)類型,從而使tuple“可變”:
    >>> t = (1, 2, ['a', 'b'])
    >>> l = ['a', 'b']
    >>> t = (1, 2, l)
    >>> t
    (1, 2, ['a', 'b'])
    >>> l[0] = 'python' # 修改tuple中列表l的值
    >>> t
    (1, 2, ['python', 'b'])
    
  • tuple的刪除
    既然tuple是不可修改的,那么tuple中的元素也是不可刪除的,但是我們可以通過del關(guān)鍵字將tuple直接刪除掉:
    >>> t = (1, 2, 3)
    >>> t
    (1, 2, 3)
    >>> del t
    >>> t
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    NameError: name 't' is not defined
    
  • tuple的索引操作和運算符
    tuple的索引操作和運算符與list完全一樣。
    補充:tuple(list)函數(shù):將list轉(zhuǎn)換為tuple,list(tuple)函數(shù):將tuple轉(zhuǎn)換為list:
    # list轉(zhuǎn)tuple:
    >>> l = [1, 2, 3]
    >>> tuple(l)
    (1, 2, 3)
    # tuple轉(zhuǎn)list:
    >>> t = ('a', 'b', 'c')
    >>> list(t)
    ['a', 'b', 'c']
    

二、字典(dictionary)和集合(set)

1、dict(字典)

字典是另一種可變的容器模型,且可存儲任意類型對象。字典的每個鍵值(key:value)對用冒號(:)分割,每個對之間用逗號(,)分割,整個字典包括在花括號{}中 ,格式如下所示:

格式:d = {key1 : value1, key2 : value2 }
例子:d = {1:"a",  2:"b", 3:"c"}
  • 字典的特點
    1、必須是唯一的,不會重復(fù),但則不必。
    2、可以取任何數(shù)據(jù)類型,如字符串,數(shù)字或元組,但不能為列表,但必須是不可變的。

  • 訪問字典的元素
    通過字典的key進行取值:

    >>> d = {"id": 2, "name":"Tom", "age": 18}
    >>> d["name"]
    'Tom'
    

    如果key不存在就會報錯,我們在訪問之前進行判斷是否存在這個key:

    >>> 'id' in d
    True
    >>> 'sex' in d
    False
    

    通過dict提供的get方法,如果key不存在,可以返回None,或者自己指定的value:

    >>> d.get('sex')
    >>> d.get('sex', -1)
    -1
    

    ps:返回None的時候Python的交互式命令行不顯示結(jié)果。

    >>> d.items()    # 打印所有鍵值對數(shù)據(jù)
    dict_items([('id', 2), ('name', 'Tom'), ('age', 20)])
    >>> d.keys()  #打印dict的所有key
    dict_keys(['id', 'name', 'age'])
    
  • 修改字典的元素
    通過鍵取值,然后進行賦值:

    >>> d["age"] = 20
    >>> d
    {'id': 2, 'name': 'Tom', 'age': 20} 
    
  • 刪除字典的元素
    可以刪除字典的key和整個字典:

    del dict['Name'] # 刪除鍵 'Name'
    dict.clear()     # 刪除字典
    del dict         # 刪除字典
    
  • dict和list的比較
    dict的查找和插入的速度極快,不會隨著key的增加而變慢。但是需要占用大量的內(nèi)存,內(nèi)存浪費多。相反,list查找和插入的時間隨著元素的增加而增加。但是占用空間小,浪費內(nèi)存很少。

2、set(集合)

set()函數(shù)是創(chuàng)建一個無序不重復(fù)元素集,可添加,刪除數(shù)據(jù),還可以計算交集、差集、并集等。

  • set的語法
    class set([iterable]) 
    參數(shù)說明: iterable -- 可迭代對象對象;
    
    >>> s = set([1, 2, 3])
    >>> s
    {1, 2, 3}
    
  • set的元素操作
    添加數(shù)據(jù),可以重復(fù)添加,但會被過濾掉:
    >>> s.add(4)
    >>> s
    {1, 2, 3, 4}
    
    刪除數(shù)據(jù):
    >>> s.remove(2)
    >>> s
    {1, 3, 4}
    
    set的交集、差集、并集操作:
    >>> s1 = set([1, 2, 3])
    >>> s2 = set([2, 3, 4])
    >>> s1 & s2  # 交集
    {2, 3}
    >>> s1 | s2  # 并集
    {1, 2, 3, 4}
    >>> s1 - s2  # 差集
    {1}
    
  • set的特點
    set和dict的唯一區(qū)別僅在于沒有存儲對應(yīng)的value,但是,set的原理和dict一樣,所以,同樣不可以放入可變對象,因為無法判斷兩個可變對象是否相等,也就無法保證set內(nèi)部“不會有重復(fù)元素”。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 本節(jié)要介紹的是Python里面常用的幾種數(shù)據(jù)結(jié)構(gòu)。通常情況下,聲明一個變量只保存一個值是遠遠不夠的,我們需要將一組...
    小黑y99閱讀 65,636評論 0 9
  • http://python.jobbole.com/85231/ 關(guān)于專業(yè)技能寫完項目接著寫寫一名3年工作經(jīng)驗的J...
    燕京博士閱讀 7,828評論 1 118
  • 一、python 變量和數(shù)據(jù)類型 1.整數(shù) Python可以處理任意大小的整數(shù),當然包括負整數(shù),在Python程序...
    績重KF閱讀 2,035評論 0 1
  • 最近在慕課網(wǎng)學(xué)習(xí)廖雪峰老師的Python進階課程,做筆記總結(jié)一下重點。 基本變量及其類型 變量 在Python中,...
    victorsungo閱讀 1,975評論 0 5
  • 我又來到了紐約,為了見一位藝術(shù)史的教授,詢問一下碩士的問題。另一個原因是,路過了巴黎,羅馬,倫敦,想看看曾經(jīng)驚艷過...
    花花騷年閱讀 232評論 0 1

友情鏈接更多精彩內(nèi)容