[python基礎]3 python數據類型下篇(不得不看的字典,列表大總結)

(ps寫了兩小時的文檔突然斷就沒了!還有兩小時寫上就去坐車車了!)上一節中主要學習了數據類型中的數字類型和字符串,忘記的小夥伴可以複習一下喲!這一節將總結列表,字典,集合等!!這部分內容可說處處可用,不管是後續的爬蟲,數據分析還是機器學習等,所以小夥伴一起加油呀!

1 python數據類型

在這裏插入圖片描述

2 列表

2.1 列表類型

python列表是任意對象的有序結合,表示方式使用**[]**。這個"任意"二字,意思是這裏面的元素可以是單個字符串,也可以是嵌套的列表,也可以是字典等。

list=["保羅","威少","韋德"]
print(list)
list1=[["保羅兒子","保羅老爸"],"威少","韋德"]
print(list1)
print(list[1])# 威少 這裏注意 下標是0開始

2.2 列表的常用方法

方法 描述
list.append(x) 末尾增加一個元素
list.insert(i,x) 在索引i的位置插入元素x
list.remove(x) 移除從左到右第一個出現的x
list.clear() 移除列表所有元素
list.pop([i]) 刪除列表中給定元素並返回
list.count(x) 統計x在列表中出現的個數並返回
list.sort(key=None, reverse=False) 對列表中元素進行排序
list.reverse() 翻轉列表中的元素
len(list) 列表中的元素個數

小夥伴可以動手嘗試下這些方法喲!

#測試remove方法 刪除第一次出現的元素
list2=["保羅","威少","韋德","保羅"]
#測試count方法
list2.count("保羅")
print(list2)
#測試remove方法
list2.remove("保羅")
print(list2)
#測試sort方法
list2.sort()
#測試reverse方法
print(list2.reverse())
#測試insert方法
list2.insert(2,"科比")
print(list2)

2.3 列表的切片

從字面上來說,“切片”(我去現在好餓呀,想吃麪包了。。)是一個局部概念,也就是滿足從列表中選取一部分元素。

  • 表示方法

使用的是":",我們舉個例子

list3=[1,2,3,4,5,6,2,1]
print(list3[0:1])#1 記住之前說好的第一個元素下標是0喲

取出從左到右的前三個數,我們將":"放在前面

print(list3[0:3])#前三個數
print(list3[:3])#前三個數 注意這裏“:”放在了前面 

我們將“:”放在X後面會出現什麼情況?將輸出X到末尾元素

print(list3[3:])#[4, 5, 6, 2, 1]

上面我們的取值都是正數,如果是負數呢?

print(list3[-3])#6
print(list3[-3:])#[6,2,1]
print(list3[:-3])#[1, 2, 3, 4, 5]

小結:我們可以通過將":"放在X的不同位置進行取值,通知X可以是負數也可以是正數。

2.4 列表的簡單應用

  • 列表作爲棧

什麼是棧?,特點爲先進後出,生活中的場景就是:我們疊盤子的時候,從下往上放,先放在下面的一般來說都會後取出來,這就是典型的棧結構。那麼在算法中常用的比如二進制轉換,二叉樹的非遞歸先序遍歷等

那我們思考怎麼用列表來表達呢?使用append在最後加入元素,然後使用pop彈出來就好了。

#列表作爲棧
stack=[1,2,3]
stack.append(4)
stack.append(5)
print(stack.pop())#5
print(stack.pop())#4
print(stack.pop())#3
  • 列表作爲隊列

隊列作爲棧的兄弟,特點不同才能更好的相處,而且正好相反爲先進先出。就好比我們排隊買火車票的場景。

#列表作爲隊列
from collections import deque
deque1=deque(['威少',"保羅","庫裏"])
deque1.append("小庫裏")
deque1.append("裏弗斯")
print(deque1.popleft())#威少
print(deque1.popleft())#保羅

3 元組

3.1 元組類型

元組的表示方式爲"()",元素之間使用逗號分開。而且非常重要的是它裏面的元素是不能修改的。比如

tuple=('威少',"保羅","哈登")
print(tuple)
#tuple([1])="庫裏"

3.2 元組常用方法

列表中的方法元組基本都可以使用。切片也好使。

print(tuple)
print(tuple[:2])#('威少', '保羅')
print(tuple[2:])#('哈登',)
print(tuple[-1:])#('哈登',)

3.3 元組的應用場景

  • 元組的賦值(有多少個元素就有多少個變量來接收)
t = ('威少', "保羅", "庫裏")
name1, name2,name3 = t
print(name1, name2,name3)#威少 保羅 
  • 元組排序

方法一:直接使用函數

scores = (100,20,30,42,78)
scores_sort=sorted(scores)# 默認爲升序
print(scores_sort)#[20, 30, 42, 78, 100] 輸出爲列表 

方法二:轉換爲列表再排序

scores = (100,20,30,42,78)
scores_list=list(scores)
scores_list.sort()
print(scores_list)#[20, 30, 42, 78, 100]
  • 分割元素爲三部分輸出
scores = (100,20,30,42,78)
minscore,*middlescore,maxscore=scores
print(minscore)#100
print(middlescore)#[20, 30, 42]
print(maxscore)#78

4 集合

4.1 集合類型

集合是一個無序不重複的序列。無序也就意味着不能通過數字進行索引。通常使用set()函數來創建,或者大括號"{}".

#集合
age={18,17,18,12,13}
print(age)#{17, 18, 12, 13}

age1=set([18,17,18,12,13])
print(age1)#{17, 18, 12, 13}

4.2 集合常用方法

  • 集合的內置函數

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-kQJ7Tgct-1579212411422)(C:\Users\lj\AppData\Roaming\Typora\typora-user-images\image-20200117041909011.png)]

序號 函數 描述
1 add(self, *args, **kwargs) 是把要傳入的元素做爲一個整個添加到集合中
2 clear(self, *args, **kwargs) 清空集合裏面的所有元素
3 copy(self, *args, **kwargs) 複製集合裏面的所有元素 ,返回一個淺複製
4 difference(self, *args, **kwargs) 求兩個集合裏面的不同的元素 ,又稱差
5 difference_update(self, *args, **kwargs) 返回刪除了 set “集合2”中含有的元素後的 set “集合1”
6 discard(self, *args, **kwargs) 如果在 set “集合”中存在元素 x, 則刪除
7 intersection(self, *args, **kwargs) 求兩個集合裏面相同的元素,又稱並 ,返回只保留含有 set “集合2”中元素的 set “集合1”
8 intersection_update(self, *args, **kwargs) 返回只保留含有 set “集合2”中元素的 set “集合1” ,並更新自己
9 isdisjoint(self, *args, **kwargs) 判斷兩個集合是不是不相交,並返回
10 issubset(self, *args, **kwargs) 判斷集合是不是包含其他集合,等同於a>=b
11 issuperset(self, *args, **kwargs) 判斷集合是不是被其他集合包含,等同於a<=b
12 pop(self, *args, **kwargs) 刪除並且返回 set “集合”中的一個不確定的元素, 如果爲空則引發 KeyError
13 remove(self, *args, **kwargs) 從 set “集合”中刪除元素 , 如果不存在則引發 KeyError
14 symmetric_difference(self, *args, **kwargs) 返回一個新的 set 包含 外面 和 裏面 中不重複的元素也就是兩個集合不重複的元素
15 symmetric_difference_update(self, *args, **kwargs) 返回含有 set “裏面”或者 set “外面”中有而不是兩者都有的元素的 set “外面”
16 union(self, *args, **kwargs) 把兩個集合連接起來,又稱並
17 update(self, *args, **kwargs) 可以在集合裏面添加多項
  • 代碼實踐
nbaPlaer={'庫裏','湯普森','詹姆斯'}
#添加
nbaPlaer.add("科比")
print(nbaPlaer)
#update可迭代對象
nbaPlaer.update("abcd")
print(nbaPlaer)
#集合的刪除 set.remove(key),元素(鍵)必須存在於集合中,否則會報錯。無返回值
nbaPlaer.remove("a")
#清空
nbaPlaer.clear()

numbers1 = {1,7,3,4,5}
numbers2 = {3,4,2,6,7}

# 對兩個集合進行交集運算
numbers_inter = numbers1 & numbers2
print(numbers_inter)# {3,4,7}
# 對兩個集合進行並集運算
numbers_union = numbers1 | numbers2
print(numbers_union)#{1, 2, 3, 4, 5, 6, 7}

4.3 集合的應用場景

  • 運用集合去重
list5={2,2,2,2,4}
set1=set(list5)
print(list5){2, 4}
  • 集合關係判定

這裏也就是上面所說的交集,並集,差集,父子集判斷

5 字典

5.1 字典類型

字典可存儲任意類型對象,用{}標識。字典由一個無序的鍵(key)值(value)對的集合。

dic={key1:value1,key2:value2}

5.2 字典4種創建方法

  • 使用大括號的方式創建字典
#創建方式1
nab_player_msg = {"name": "庫裏", "age": 30}
  • 使用關鍵字參數和類型構造函數來創建字典
#創建方式2
nab_player_msg1 = dict(name = "庫裏", age = 30)
  • 使用zip函數將名字和值連接構成字典
#創建方式3
keys=["name",age]
values=["庫裏","30"]
nab_player_msg2 = dict(name = "庫裏", age = 30)
  • 使用fromkey通過一個鍵序列和所有的鍵的額可選初始值來創建字典
#創建方式3
keys=["name",age]
nab_player_msg3=dict.fromkeys(keys,"?")

5.3 字典的常用遍歷方式

  • 通過遍歷key值遍歷字典
#創建方式1
nab_player_msg = {"name": "庫裏", "age": "30"}
#字典遍歷方式1 通過key
for key in nab_player_msg:
    print(key+":"+nab_player_msg[key])
  • 通過items遍歷字典
for k,v in nab_player_msg.items():
    print(k+":"+v)
  • 通過zip遍歷字典
for k,v in zip(nab_player_msg.keys(),nab_player_msg.values()):  
    print(k+":"+v)

5.4 字典的應用場景

  • 使用多個鍵值對,存儲描述一個對象更加複雜的數據信息
  • 嵌套的字典

Big_plaer = {
    '美國':{
        '科比':['得分後衛','牛掰'],
        '保羅':['控球后衛','穩']
    },
    '大陸':{
        '姚明':['中鋒','霸氣']
    }
}
print(Big_plaer)
for i in Big_plaer:
    print(i,Big_plaer[i])

6 總結

不知道你們看完有一點點收穫嗎?如果有收穫希望你

  1. 點贊 給予我更多鼓勵同時讓更多人學習
  2. 關注我公衆號[我是程序員小賤]獲取更多的乾貨。相信我不會讓你們失望!
    在這裏插入圖片描述
發佈了34 篇原創文章 · 獲贊 65 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章