1. 程式人生 > >學習python的第九天(內置算法:列表數據類型,元祖數據類型,字典數據類型)

學習python的第九天(內置算法:列表數據類型,元祖數據類型,字典數據類型)

定義 sort 排序 [] 區別 ict code true 結果 復制

5.8自我總結

1.列表類型內置算法

1.必須掌握

1.按索引取值(正向取值+反向取值),即可存也可以取

#用於取其中一個值
name = ['yang','wen','yi']
##正方向取wen,也就是從左到右
pritn(name[1])
##正方向取wen,也就是從右到左
print(name[-2])

2.切片

#用於取多個值
name = ['yang','wen','yi']
#取其中的yang wen
print(name[0:2])  #和字符串類似顧頭不顧尾
print(name[0:-1])
print(name[-3:-1])
print(name[:2])    #這兩個是上面基礎上精簡的
print(name[:-1])

3.長度len

#用於長度3
name = ['yang','wen','yi']
print(len(name))

4.成員運算in和not in

#用於判斷有誤值在裏面
name = ['yang','wen','yi']
print('wennnn' in name) #False
print('wen' in name) #True

5.追加append

#只加在最後
name = ['yang','wen','yi']
print(name.append(22)) #None
print(name) #['yang', 'wen', 'yi', 222]

6.刪除del

name = ['yang','wen','yi']
#刪除wen
del name[1]

7.循環

name = ['yang','wen','yi']
for i in name:
    print(i)
#yang
#wen
#yi

2.了解

1.insert

name_list = ['nick', 'jason', 'tank', 'sean']
name_list.insert(1, 'handsome')  #加入後那個值的位置,加入的值
print(f"name_list: {name_list}")

2.pop

# list之pop(),pop()默認刪除最後一個元素,刪除一個元素
name_list = ['nick', 'jason', 'tank', 'sean']

print(f"name_list.pop(1): {name_list.pop(1)}")  #會顯示刪除的值
print(f"name_list: {name_list}")

3.remove

# list之remove() 刪除一個元素
name_list = ['nick', 'jason', 'tank', 'sean']

print(f"name_list.remove('nick'): {name_list.remove('nick')}")  #會輸出None

4.count

# list之count()     #x顯示對於值的個數
name_list = ['nick', 'jason', 'tank', 'sean']

print(f"name_list.count('nick'): {name_list.count('nick')}")

5.index

查找索引

6.clear

刪除列表元素

7.copy

name_list = ['nick', 'jason', 'tank', 'sean']

print(f"name_list.copy(): {name_list.copy()}")

8.extend

# list之extend()
name_list = ['nick', 'jason', 'tank', 'sean']
name_list2 = ['nick handsome']
name_list.extend(name_list2)

print(f"name_list: {name_list}")            
#name_list: ['nick', 'jason', 'tank', 'sean', 'nick handsome']   在末尾加入

9.reverse

# list之reverse()
name_list = ['nick', 'jason', 'tank', 'sean']
name_list.reverse()
print(f"name_list: {name_list}")
# name_list: ['sean', 'tank', 'jason', 'nick']  翻轉

10.sort

# list之sort(),使用sort列表的元素必須是同類型的
name_list = ['nick', 'jason', 'tank', 'sean']
name_list.sort()

print(f"name_list: {name_list}")
#name_list: ['jason', 'nick', 'sean', 'tank']  #升序
name_list.sort(reverse=True)
print(f"name_list_reverse: {name_list}") 
#name_list_reverse: ['tank', 'sean', 'nick', 'jason']  #降序

3,一個值或者多個值

多個值

4.有序或者無序

有序

5.可變或者不可變

可變

2.元祖類型

1.定義

(),中間加元素用,隔開

2.用法

(與列表相似,區別是可以讀取不可存儲改變,列表中關於存儲或者改名元素的內容內置函數元祖不行)

  1. 索引取值
  2. 切片(顧頭不顧尾,步長)
  3. 長度len
  4. 成員運算in和not in
  5. 循環
  6. count
  7. index

3.一個值或者多個值

多個值

4.有序或者無序

有序

5.可變或者不可變

不可變

3.字典數據類型內置算法

1.必須掌握

1.按key存取值:可存可取

dict = {'name':'yang','age':18}
#取 姓名
dict[name]

2.長度len

dict = {'name':'yang','age':18}
#取 長度
len(dict)

3.成員運算in和not in

判斷有無key而不是值

4.刪除del

dict = {'name':'yang','age':18}
#刪除名字
dal dict[name]

5.鍵keys()、值values()、鍵值對items()

#演示即可
dict = {'name':'yang','age':18}
print(dict.keys())
print(dict.values())
print(dict.items())
'''
dict_keys(['name', 'age'])
dict_values(['yang', 18])
dict_items([('name', 'yang'), ('age', 18)])
'''

6.循環

dic = {'a': 1, 'b': 2, 'c': 3, 'd': 4}
for k, v in dic.items():  # items可以換成keys()、values()
    print(k, v)
#a 1
#b 2
#c 3
#d 4

2.慢慢掌握

1.get

和key取值有點類似區別就是取不到不會報錯,但是不能用get來更換值

2.update

# dic之update()
dic1 = {'a': 1, 'b': 2}
dic2 = {'c': 3}#如果dic2與dic1中key有相同的,則不會增加新的key更新值,如果沒有相同的則會添加key還有值
dic1.update(dic2)

print(f"dic1: {dic1}") 
#dic1: {'a': 1, 'b': 2, 'c': 3}       

3.fromkeys

# dic之fromkeys()
dic = dict.fromkeys(['name', 'age', 'sex'], None)
print(f"dic: {dic}")
#給目錄賦予相同的值

4.setdefault

# dic之setdefault(),有指定key不會改變值;無指定key則改變值
dic = {'a': 1, 'b': 2}

print(f"dic.setdefault('a'): {dic.setdefault('a',3)}")
print(f"dic: {dic}")
print(f"dic.setdefault('c'): {dic.setdefault('c',3)}")
print(f"dic: {dic}")

#dic.setdefault('a'): 1
#dic: {'a': 1, 'b': 2}
#dic.setdefault('c'): 3
#dic: {'a': 1, 'b': 2, 'c': 3}

4.需要記的單詞

  1. get 獲得
  2. update 更新
  3. fromkeys 生成一個字典,修改和添加
  4. setdefault 只添加不修改
  5. count 查找個數
  6. index 查找索引
  7. insert 具體某個位置插入
  8. pop 刪除 能顯示刪除的值
  9. remove 刪除 不能顯示刪除的值
  10. clear 清除元素
  11. copy 復制
  12. extend 延伸
  13. reverse 顛倒
  14. sort 排序

5.今日題目

  1. 有列表data=[‘alex‘,49,[1900,3,18]],分別取出列表中的名字,年齡,出生的年,月,日賦值給不同的變量:

    data=['alex',49,[1900,3,18]]
    name,age,data_1 = data
    year,month,day = data_1
    print(name,age,year,month,day)
    #####################
    data=['alex',49,[1900,3,18]]
    a,b,c = data
    d,e,f = c
    data = [a,b,d,e,f]
    keys = ['姓名','年齡','年','月','日']
    dic= {}
    time = 0
    while time < len(data):
        dic.setdefault(keys[time],data[time])
        time += 1
    print(dic)
  2. 用列表模擬隊列(最先進入列表的元素會先出來):
# 答案,通過該答案模仿寫出第3題
lis = []

print(f"進隊列前lis: {lis}")

# 進隊列
for i in range(1, 6):
    lis.append(i)
    print(i)

print(f"結束進入隊列lis: {lis}")

# 出隊列
for i in range(len(lis)):
    print(lis.pop(0))
    
print(f"出隊列後lis: {lis}")
  1. 用列表模擬堆棧(最後進入列表的元素會先出來):

    new_lis = []
    for i in range(1,6):
     new_lis.append(i)
    new_lis.reverse()
    print(new_lis)
  2. 有如下列表,請按照年齡排序(涉及到匿名函數):
lis=[
    {'name':'alex','age':84},
    {'name':'oldboy','age':73},
    {'name':'egon','age':18},
]

# 通過姓名排序參考(涉及匿名函數):

lis.sort(key=lambda item:item['name'])


lis.sort(key=lambda item:item['age'])
  1. 有如下值集合[11,22,33,44,55,66,77,88,99,90...],將所有大於 66 的值保存至字典的第一個key中,將

    小於 66 的值保存至第二個key的值中,結果為{‘k1‘: 大於66的所有值, ‘k2‘: 小於66的所有值}

    k1_list = []
    k2_list = []
    new_dict = {'k1':k1_list,"k2":k2_list}
    a = [11,22,33,44,55,66,77,88,99,90]
    for i in a:
        if i >=66:
            k1_list.append(i)
        elif i < 66:
            k2_list.append(i)
    print(new_dict)
  2. 統計s=‘hello jason tank tank jason sean say hello dsb dsb sb‘中每個單詞的個數,結果為`{‘hello‘: 2, ‘alex‘: 0, ‘say‘: 1, ‘sb‘: 1}

s='hello jason tank tank jason sean say hello dsb dsb sb'
hello_num = s.count('hello')
alex_num = s.count('alex')
sb_num = s.split().count('sb')
say_num = s.count('say')
new_dic = {'hello':hello_num,'alex':alex_num,'say':say_num,'sb':sb_num}
print(new_dic)
#{'hello': 2, 'alex': 0, 'say': 1, 'sb': 1}

學習python的第九天(內置算法:列表數據類型,元祖數據類型,字典數據類型)