Python基礎筆記3-列表、元組、字典


溫馨提示:手機觀看時,代碼塊可以左右滑動

本文內(nèi)容

  • 列表新建

索引
切片
序列的加法和乘法
成員資格
列表方法

  • 元組
  • 字典

字典常用方法

寫在前面

  • Python內(nèi)置了多種序列,列表和元組是其中最常用的兩種;
  • 列表和元組的主要區(qū)別在于,列表可以修改,而元組不可以;
  • 常規(guī)操作包括索引、切片、插入、刪減等。

列表新建

  • 新建一個列表;
  • 列表由中括號為容器,每個元素之間用逗號間隔。
#新建一個列表:
alist = [1,"nihao","hello","你好"]
print(alist)

索引

  • 列表中所有元素都有編號—從0開始遞增;
  • 列表中第一個元素編號為0,最后一個元素編號為-1。
alist = [1,"nihao","hello","你好"]
alist[0]    #取出alist中的第一個元素1
alist[-1]   #取出alist中的最后一個元素"你好"
alist[2]    #取出alist中的第三個元素"hello"

切片

  • 用索引我們可以訪問單個元素,而切片可以讓我們訪問多個元素
  • 使用兩個索引值,并用冒號分隔
blist = [1,2,3,4,5,6,7,8,9,10]  #新建一個列表blist
blist[0:3]                      #取出blist中前3個元素[1,2,3]
blist[7:10]                     #取出blist中后3個元素[8,9,10]

#添加步長參數(shù)
blist[0:4:2]    #按步長為2,取出blist中前4個元素.[1,3]
#小應用:提取域名
wangzhi = input("請輸入網(wǎng)址")   #輸入http://www.xiaokeai.com
yuming = wangzhi[11:-4]         #截取域名
print(yuming)                   #返回 xiaokeai

序列的加法和乘法

[1,3,4]+[4,6,7]   #運行結果為[1, 3, 4, 4, 6, 7]
[1,3,4]*4         #運行結果為[1, 3, 4, 1, 3, 4, 1, 3, 4, 1, 3, 4]

成員資格

  • 用in判斷元素是否在列表中,存在返回True,不存在返回False
#判斷輸入的內(nèi)容是否存在
users = ["王二麻子","李大嘴","趙四","大墩子"]  #簡歷列表users
user_name = input("請輸入你的名字:")           #輸入
user_name in users

列表方法

  • append 將一個對象附加到列表結尾
  • insert 將一個對象插入到列表中的指定位置
  • extend 將多個值添加進列表末尾
lst = [3,7,32,8,13,34]  #創(chuàng)建新列表lst
lst.append(3)           #添加新元素3
print(lst)              #打印結果[3, 7, 32, 8, 13, 34, 3]

tst = [3,7,32,8,13,34]  #創(chuàng)建新列表tst
tst.insert(3,"hello")   #插入新元素,使得新元素的索引為3
print(tst)              #打印結果[3, 7, 32, 'hello', 8, 13, 34]

ist = [3,7,32,8,13,34]  #創(chuàng)建新列表ist
a = [1,3,4]             #創(chuàng)建新列表a
ist.extend(a)
print(ist)              #打印結果[3, 7, 32, 8, 13, 34, 1, 3, 4]
#extend添加與加法(ist+a)的主要區(qū)別是,extend改變了ist的內(nèi)容,而加法沒有改變ist
  • copy 復制列表

  • count 計算出指定的元素在列表中出現(xiàn)了多少次

  • index 查找指定值第一次出現(xiàn)的索引

a = [1,2,3]           #創(chuàng)建新列表a
b = a.copy()          #將a復制給b
print(b)              #輸出結果[1,2,3]
b[1] = 4              #改變b中的元素
print(a,b)            #a不會被改變,輸出[1, 2, 3] [1, 4, 3]

k = ["two","to","san","two",["two","two"]]  #新建列表k
k.count("two")                              #統(tǒng)計k中"two"的個數(shù),返回結果2
k.index("to")                               #返回to第一次出現(xiàn)的索引值,結果為1
  • pop 從列表中刪除末尾元素,并返回這一元素
  • remove 用于刪除第一個為指定值的元素
  • clear 清空列表內(nèi)容
  • del 刪除列表中元素(del語句不屬于方法)
x = [1,2,3]  #創(chuàng)建新列表x
x.pop()      #刪除了最后一個元素,并返回3
print(x)     #輸出結果[1,2]

y = [4,65,86,4,56,5]  #創(chuàng)建新列表y
y.remove(4)           #刪除列表中第一個4
print(y)              #輸出結果[65, 86, 4, 56, 5]

j = [5,432,5425.6,51] #創(chuàng)建新列表j
j.clear()             #清除列表
print(j)              #打印結果[]

l = ["to","be","am","is","are"]  #創(chuàng)建新列表l
del l[2]                         #刪除l中索引為2的元素
print(l)                         #輸出結果['to', 'be', 'is', 'are']
  • sort 對列表進行排序,默認為從小到大排序,或者按字母順序排序。調(diào)整參數(shù)可以調(diào)整排序方式。
h = [32,54,6,8,2,543,6576,243]
h.sort()                       
print(h)  #輸出結果[2, 6, 8, 32, 54, 243, 543, 6576],按數(shù)字大小

h.sort(reverse=True)
h.reverse()
print(h)  #調(diào)整sort中reverse參數(shù)或者直接使用reverse方法可以倒序排序,輸出結果為[6576, 543, 243, 54, 32, 8, 6, 2]

y = ["p","y","t","h","o","n"]
y.sort()
print(y)  #輸出結果['h', 'n', 'o', 'p', 't', 'y'],按字母先后順序

name = ["dhjak ","jkl","dsafd","dasjkdal"]
name.sort(key=len)  #調(diào)整sort的key參數(shù),可以實現(xiàn)按文本長度排序
print(name)         #輸出結果['jkl', 'dsafd', 'dhjak ', 'dasjkdal']

元組

  • 以小括號形式體現(xiàn)的數(shù)據(jù)集,不同元素之間用逗號隔開;
  • 元組許多功能與列表相似,唯一區(qū)別是不能進行修改元素。語法也很簡答,在這就不一一贅述。

字典

  • 字典由“{}”、“鍵”以及“值”組合而成,鍵和值之間用“:”相連。每個鍵值對之間由“,”相隔;
  • 字典是一種無序的映射的集合。包含若干個鍵值對;
  • 其中字典中的鍵通常采用字符串,但也可以用數(shù)字、元組等類型;字典值則可以是任意類型。
思考:有了列表和元組兩個容器,我們?yōu)槭裁催€需要用字典呢?
接下來給大家舉一個例子,用該例子說明我們字典的優(yōu)勢。
#開學了,現(xiàn)在我們這有一份學員名單,以及每個學員的性別,如下:
name = ["zhao","qian","sun","li","zhou","wu","zheng","wang"]
gender = ["F","M","F","F","M","F","M","M"]

#現(xiàn)在我們想知道同學"sun"的性別,于是我們寫了以下代碼:
print(gender[name.index("sun")])

#上面這行代碼當然是可以為我們反饋正確結果的,但是這個代碼寫起來非常麻煩。如果我們建立了字典,將會大大簡化我們的代碼。步驟如下:
xueyuan = {"zhao":'F',"qian":'M',"sun":'F',"li":'F',"zhou":'M',"wu":'F',"zheng":'M',"wang":'M'}
print(xueyuan["sun"])   
從剛才這個小例子,我們看到了字典的優(yōu)勢,也知道了如何建立字典容器。接下來我們來看字典的基本操作:
  • len(dict)返回dict字典中包含的項(鍵值對)個數(shù);
  • dict[a]返回與鍵a相關聯(lián)的值;
  • dict[b] = value 講b值關聯(lián)到key2;
  • del dict[c] 刪除c的項;
  • e in d 檢查字典d是否包含鍵為e的項;
dict1 = {"name":"zhang","age":10}  #創(chuàng)建字典
print(len(dict1))                  #用函數(shù)len()求出字典dict1的鍵值對個數(shù),返回2

print(dict1["name"])               #通過"[鍵]"可以查出該鍵所對應的的值,返回"zhang"

dict1["age"]=12                    #更改age所對應的值
print(dict1)                       #返回結果{'name': 'zhang', 'age': 12}

del dict1["age"]                   #刪除"name"項
print(dict1)                       #返回結果{'name': 'zhang'}

"name" in dict1                    #檢查字典dict1中是否包含"name"項,返回True
字典的常用方法
  • pop() 從字典中刪除,并返回映射值
  • popitem() 從字典中刪除并返回鍵值對元組
  • clear() 刪除字典內(nèi)的全部對象
d1 = {"a":1,"b":2,"c":3}   #創(chuàng)建字典d1
d1.pop("a")                #刪除鍵為a的鍵值對,并且返回值1
print(d1)                  #返回{'b': 2, 'c': 3}

d1.popitem()               #隨機的刪除d1中某一對鍵值對,并返回鍵值對元組。因為字典是無序的,不能確定他每次刪除的是哪一項鍵值對。如果本身字典為空,在執(zhí)行該語句會報錯。

d1.clear()                 #清除字典內(nèi)全部對象
print(d1)                  #返回{}
  • copy() 復制字典對象
x = {"name":"張三","age":"9"}     #創(chuàng)建一個字典
y = x                             #直接復制時,x和y引用同一個字典
print(x,y)                        #返回{'name': '張三', 'age': '9'} {'name': '張三', 'age': '9'}
y["name"]="李四"                  #將y中鍵"name"的值改為"李四"
print(x)                          #x也跟隨改變,{'name': '李四', 'age': '9'}

#可以用方法copy()解決這個問題
y = x.copy()                      #y引用復制字典
y["name"] = "王五"                #講y中鍵"name"的值改為"王五"
print(y,x)                        #x也跟隨改變,{'name': '王五', 'age': '9'} {'name': '李四', 'age': '9'}
  • get(key[,default]) 返回key鍵映射的值。如果key不存在,返回空值??梢杂胐efault參數(shù)指定不存在的鍵的返回值。如下例
x = {"name":"張三","age":"9"}     #創(chuàng)建一個字典
x.get("name")                     #返回鍵"name"對應值"'張三'
x.get("gender")                   #沒有"gender"鍵,所以返回空
x.get("gender","none")            #設定default參數(shù),當沒有"gender"鍵,返回"none"
  • setdefault(key[,default]) 用該方法返回映射值或者添加鍵值對。
  • upgrade() 為字典添加鍵值對,若字典已存在同名的鍵,則映射值被覆蓋。
x = {"name":"張三","age":"9"}     #創(chuàng)建一個字典
x.setdefault("name")              #返回鍵"name"對應值"'張三'
x.setdefault("gender")            #添加新鍵值對
print(x)                          #返回{'name': '張三', 'age': '9', 'gender': None},默認給None值
x.setdefault('phone','123')       #添加新鍵值對
print(x)                          #返回{'name': '張三', 'age': '9', 'gender': None, 'phone': '123'}
  • items() 返回鍵值對視圖
  • keys() 返回字典中所有鍵的視圖
  • values() 返回字典中所有值的視圖
y = {'name': '張三', 'age': '9', 'gender': None, 'phone': '123'} #創(chuàng)建一個字典
x.items()  #返回鍵值對視圖 dict_items([('name', '張三'), ('age', '9'), ('gender', None), ('phone', '123')])
x.keys()   #返回所有鍵的視圖 dict_keys(['name', 'age', 'gender', 'phone'])
x.values() #返回所有值的視圖 dict_keys(['name', 'age', 'gender', 'phone'])

上一篇:Python基礎筆記2-字符串方法(更新中)
下一篇:Python基礎筆記4-函數(shù)編寫與傳參方式

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

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

  • 列表: 前面已經(jīng)用了很多次列表,可以看出列表的功能是比較強大的。本節(jié)將討論列表不同于元組和字符串的地方:列表的內(nèi)容...
    瀧汰泱閱讀 1,350評論 0 1
  • 本章將介紹一個新概念:數(shù)據(jù)結構。數(shù)據(jù)結構是以某種方式(如通過編號)組合起來的數(shù)據(jù)元素(如數(shù)、字符乃至其他數(shù)據(jù)結構)...
    Colleen_oh閱讀 581評論 0 0
  • 本節(jié)要介紹的是Python里面常用的幾種數(shù)據(jù)結構。通常情況下,聲明一個變量只保存一個值是遠遠不夠的,我們需要將一組...
    小黑y99閱讀 65,607評論 0 9
  • 數(shù)據(jù)結構,是指通過某種方式(例如對元素進行編號)組織在一起的數(shù)據(jù)元素的集合,這些數(shù)據(jù)元素可以是數(shù)字或者字符,甚至可...
    千釋炎閱讀 950評論 0 0
  • 1.1.列表定義 列表是python中內(nèi)置有序可變序列,列表的所有元素放在一對中括號“[]”中,并使用逗號分隔開;...
    Rolle_Wang閱讀 1,037評論 0 0

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