天天看點

access資料放到list中_Python中的基礎資料類型(List,Tuple,Dict)及其常用用法簡析

清單

首先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+li2print(li3)
           

清單查詢

# 判斷某個值是否存在于清單中,傳回bool值li = [1, 2, 3, 4]res = 2 in liprint(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']) # v11print(dic['k4'][0]) # 1print(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和valueprint('四:')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和valuev1 = 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=valuedic.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) # KeyErrorres = dic.pop('k111','key不存在')print(dic,res) # 傳回第二個參數# 删除字典中的最後一對鍵和值并将鍵和值傳回k,v = dic.popitem()print(dic,k,v)# 清空字典dic.clear()print(dic)
           
access資料放到list中_Python中的基礎資料類型(List,Tuple,Dict)及其常用用法簡析