Python中的基礎資料型別(List,Tuple,Dict)及其常用用法簡析

千鋒Python唐小強發表於2020-05-13

列表

首先List是有[]包括的,每個元素用(逗號)隔開,List中可以巢狀任何資料型別,資料型別可以相互巢狀(set除外)如:

# 定義一個列表


li = ['a', 1, True, ('b', 'c',), [1, 2, 3], {'name': '鹹魚'}, {1, 2}]

# 遍歷

for i in li:

   # 列印資料型別和值

   print(type(i), i)

列表的取值

# 定義一個列表


li = ['a', 1, True, ('b', 'c',), [1, 2, 3], {'name': '鹹魚'}, {1, 2}]

# 透過索引取值,注意索引從0開始

temp1 = li[0]

print(temp1) # a

# 列表中巢狀了列表取值

temp2 = li[4][0]

print(temp2) # 1

# 還記得字串切片嗎?list一樣可以,值仍然是列表

temp3 = li[1:5:]

print(temp3) # [1, True, ('b', 'c'), [1, 2, 3]]

列表的遍歷

# 定義一個列表


li = ['a', 1, True, ('b', 'c',), [1, 2, 3], {'name': '鹹魚'}, {1, 2}]

# 推薦使用

for i in li:

 print(i)

# 利用索引加列表的長度遍歷,這裡用了while迴圈

j = 0 # 從0索引開始

while j < len(li): # 索引小於列表的長度

 print(li[j])   # 列印當前索引的值

 j += 1   # 索引+1 等同於 j = j + 1,開始下次迴圈

列表修改

# 還記得可變型別和不可變型別嗎?可變就意味某個元素的值可以變化


li = ['a', 'b', 'c']

li[0] = 'b'

print(li)

# 用切片更改部分索引的值

li[0:2] = ['c','c']

print(li)

#錯誤示範:不可變的資料型別無法更改某個索引的值

str1 = 'abc'

print(str1[0]) # 可以列印某個索引的值

str1[0] = '1' # 更改某個索引的值丟擲異常 TypeError: 'str' object does not support item assignment

列表刪除

li = ['a', 'b', 'c']


# 根據索引刪除某個元素

del li[0]

print(li)

# 刪除某個索引的元素,並返回刪除的值,預設刪除最後一個元素

li = ['a', 'b', 'c']

temp1 = li.pop() # 將返回的刪除的值賦值一個變數,列印看看

print(li)

print(temp1)

temp2 = li.pop(0) # 也可以傳入要刪除的索引

print(li)

print(temp2)

# 按照值刪除值 從最左邊開始刪除一個

li = [11, '22', 22, 33, 44, 22]

li.remove(22)

print(li)

li = ['a', 'b', 'c']

# 清空整個列表

li.clear()

print(li)

列表插入

# 向指定索引位置新增值


li = [1, 2, 3, 4, 5, 6]

li.insert(2, 'lll') # insert(索引位置,要新增的值)

print(li)

# 向物件後面追加

li = [1, 2, 3, 4, 5, 6]

li.append("aaa") # 追加單個元素

li.append([11, 22, 33]) # 追加的列表作為了一個元素

print(li)

# 擴充套件列表

li = [1, 2, 3, 4, 5, 6]

li.extend("aaa") # 將字串的每個元素新增到原有列表中

li.extend([11, 22, 33]) # 將列表的每個元素新增到原有列表中

print(li)

# 合併兩個列表

li1 = [1, 2, 3, 4]

li2 = ['a', 'b', 'c', 'd']

li3 = li1+li2

print(li3)

列表查詢

# 判斷某個值是否存在於列表中,返回bool值


li = [1, 2, 3, 4]

res = 2 in li

print(res)

# 判斷某個值在列表中存在幾次

li = [1, 2, 2, 3, 2, 2, 3, 4]

res = li.count(2)

print(res)

# 判斷某個值在列表的索引,存在多個返回第一個值的索引

li = [1, 2, 3, 4]

res = li.index(2)

print(res)

# 如果不存在丟擲異常

# li = [1,2,3,4]

# res = li.index(6)

# print(res) # ValueError: 6 is not in list

列表反轉

li = [1, 'a', 2, 'b']


li.reverse()

print(li)

列表排序,最大(小)值

# 注意只有相同型別的資料才能排序,取最大,最小值,無法數字與字串混用


li = [8, 2, 6, 8, 5]

li.sort() # 排序

print(li)

li = ['b', '5', 'z', 'y', 'r', 'l']

li.sort()

print(li)

# 最大值

print(max(li))

# 最小值

print(min(li))

列表和字串的相互轉換

# 字串轉換為列表


str1 = 'abcdefg'

li = list(str1)

print(li)

# 列表轉換為字串,注意這種只能列表內全是字串

li = ['1', 'a', 'c', '2']

s1 = ''.join(li)

print(s1)

# 列表中包含有數字型別的

li = [1, 2, 'a', 'b']

# 先定義一個空字串

s1 = ''

# 遍歷列表

for i in li:

 # 將數字型別轉換為字串拼接到之前定義的空字串

 s1 += str(i)

print(s1)

元組

元組是不可變型別,無法根據索引更改值,無法新增和刪除,元組用()包括,如:

tu = (111, "aaa", (11, 22, 33,), [(1, 2, 3)], 222, True, 333,)

元組一樣可以索引,切片取值,遍歷,這裡不再演示

有兩個方法:

count(a) # 獲取指定元素在元組中出現的個數


index(a,start,end)   # 獲取指定元素在元組中的索引

小知識:

元組也是小括號,與方法看起來一樣,為了方便區分,更加直觀,我們一般在後面多加一個逗號,這是一個良好的規範...,如:

tu = (1,2,3,)

字典

字典用{}包括,由key和value組成的鍵值對,字典是個無序集合 列表、字典不能作為key值,key值只能是唯一的,字典中依然可以巢狀其他的資料型別,如:

dic = {


 'k1': 'v1',

 'k2': 'v2',

 'k3': 'v3',

 'k2': 'v4',

 False: "aa",

 0: "bb",

 'k4': [1, 2, 3, 4],

 'k5': {

     'k1': 'v1'

 }

}

print(dic)

取值

dic = {


 'k1': 'v1',

 'k2': 'v2',

 'k3': 'v3',

 'k2': 'v4',

 False: "aa",

 0: "bb",

 'k4': [1, 2, 3, 4],

 'k5': {

     'k1': 'v11'

 }

}

# 字典透過key取值,字典內的列表依然透過索引取值

print(dic['k5']['k1']) # v11

print(dic['k4'][0]) # 1

print(dic['kkkk']) # 不存在的key丟擲異常 KeyError

# 推薦使用get,key存在返回value,不存在返回第二個引數

print(dic.get('kkkk')) # 不丟擲異常返回None(預設)

print(dic.get('kkkk', '不存在')) # 此時返回'不存在'

遍歷

dic = {


 'k1': 'v1',

 'k2': 'v2',

 'k3': 'v3',

 'k2': 'v4',

 False: "aa",

 0: "bb",

 'k4': [1, 2, 3, 4],

 'k5': {

     'k1': 'v11'

 }

}

# 字典中key相同是後面的覆蓋前面的   True是1 False是0,可以觀察到key只有false,value是後來覆蓋的'bb'

# 預設迴圈的是key值

print('一:')

for i in dic:

 print(i)

# 預設迴圈的是key值

print('二:')

for i in dic.keys():

 print(i)

# 迴圈的是value值

print('三:')

for i in dic.values():

 print(i)

# 迴圈key和value

print('四:')

for i,j in dic.items():

 print(i,j)

fromkeys

# 將第一個引數作為key值,第二個引數作為統一的值生成字典


dic0 = dict.fromkeys('a') # 第二個引數不寫value預設為None,空值,不等同於空字串('')

print(dic0)

dic1 = dict.fromkeys('a', 'b')

print(dic1)

dic2 = dict.fromkeys('a', [1, 2, 3]) # 第二個引數作為統一的值生成字典

print(dic2)

dic3 = dict.fromkeys(['a','b','c'], [1,2,3])

print(dic3)

新增

dic = {


 'k1': 'v1',

 'k2': 'v2',

 'k3': 'v3'

}

# 已經存在的key會修改對應key的值,沒有的key新增相應的值

dic['k4'] = 'v4'

print(dic)

# 已經存在的key返回對應的value,沒有則新增key和value

v1 = dic.setdefault('k1', 'v111')

print(dic, v1)

v2 = dic.setdefault('k123', 'v123')

print(dic, v2)

修改

dic = {


 'k1': 'v1',

 'k2': 'v2',

 'k3': 'v3',

 'k4': 'v4',

 'k5': 'v5'

}

# 利用key只能唯一的特性,將上一個值覆蓋

dic['k1'] = 'v111'

print(dic)

# update(傳入字典形式的資料)

dic.update({'k2': 'v222'})

print(dic)

# 更新多個

dic.update({'k3': 'v333','k4':'k4444'})

print(dic)

# 也可以直接寫key=value

dic.update(k5='k555')

print(dic)

# 更新一個不存在的key就相當於新增了

dic.update(k6='k666')

print(dic)

刪除

# 刪除並獲取值pop(引數1,引數2)


res = dic.pop('k1')

print(dic,res)

# 刪除不存在的鍵不傳入第二個引數的話丟擲異常

# res = dic.pop('k111')

# print(dic,res) # KeyError

res = dic.pop('k111','key不存在')

print(dic,res) # 返回第二個引數

# 刪除字典中的最後一對鍵和值並將鍵和值返回

k,v = dic.popitem()

print(dic,k,v)

# 清空字典

dic.clear()

print(dic)



來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69923331/viewspace-2691894/,如需轉載,請註明出處,否則將追究法律責任。

相關文章