01.Python基礎-3.集合容器
1 列表list
1.1 列表介紹
- Python內置的一種數據類型是列表:
list
。 - 有序的集合,可隨時添加和刪除其中的元素。
- 每個元素都分配一個數字 ——它的位置,或索引。0,1,2,3……
- 可存放各種類型的數據
1.2 定義列表
列表名 = [值1,值2,值3.......]
1.3 列表-查 index count len max min
- 根據下標查找值 值 = xxx[index]
name = [‘a‘, ‘b‘, ‘c‘]
# 下標從0開始
n1 = name[0] # ‘a‘
n2 = name[1] # ‘b‘
- 從列表中找出某個值第一個匹配項的索引位置 xxx = 列表.index(值)
‘‘‘
通過值獲取下標,只能獲取第一次出現的位置
如果這個值不存在,則報錯 VakueError
‘‘‘
nums = [1, 11, 88, 43]
where = nums.index(88) # 2
- 統計某個元素在列表中出現的次數 xxx = 列表.count(值)
‘‘‘
nums.count(),獲取此值在list中的個數
如果沒有就是0
‘‘‘
nums = [1, 11, 88, 43]
num = nums.count(999) # 0
- 查詢列表的長度,元素的個數 xxx = len(列表)
# len(列表名)可以獲取集合、字符串的長度 nums = [1, 11, 88, 43] nums_len = len(nums) # 4
- 查看列表中元素的最大值,最小值 max() min()
nums = [1, 11, 88, 43]
a = max(nums) # 88
b = min(nums) # 1
1.4 列表增 append insert extend
- xxx.append(值)
作用:新增到末尾
nums = [1, 11, 88, 43]
nums.append(22)
print(nums) # [1, 11, 88, 43, 22]
- xxx.insert(下標,值)
作用:插入到指定位置
nums = [1, 11, 88, 43] nums.insert(2, 22) print(nums) # [1, 11, 22, 88, 43] nums.insert(-1, 33) # 插入至倒數第二個的位置 print(nums) # [1, 11, 22, 88, 33, 43]
- xxx.extend(列表)
作用:列表末尾一次性追加另一個序列中的多個值(用新列表擴展原來的列表)。
a = [‘aa‘, ‘bb‘]
b = [1 , 2]
a.extend(b)
print(a) # [‘aa‘, ‘bb‘, 1 , 2]
1.5 列表-改
xxx[下標] = 值
a = [‘aa‘, ‘bb‘]
a[0] = 111
print(a) # [111, ‘bb‘]
1.6 列表-刪
1.刪除末尾元素,並返回此元素 xxx.pop()
‘‘‘
如果不寫下標,刪除最後一個
如果寫下標,就刪除對應下標的內容
‘‘‘
nums = [110, 120, 119]
num = nums.pop() # 119
print(nums) # [110, 120]
nums = [110, 120, 119]
num = nums.pop(1) # 120
print(nums) # [110, 119]
- 根據元素下標刪除 del xxx[下標]
# del 刪除指定下標的值,無返回值!
nums = [110, 120, 119]
del nums(1)
print(nums) # [110, 119]
- 根據元素的值刪除 xxx.remove(值)
# remove()根據值進行刪除,無返回值!
nums = [110, 120, 119]
nums.remove(120)
print(nums) # [110, 119]
1.7 列表-判斷
- in(存在)
如果存在那麽結果為True,否則為False
- not in(不存在)
如果不存在那麽結果為True,否則False
1.8 列表-腳本操作
num1 = [1, 2, 3]
num2 = [4, 5, 6]
ret = num1 + num2 # [1, 2, 3, 4, 5, 6]
num1 = [1, 2, 3]
ret = num1 * 2 # [1, 2, 3, 1, 2, 3]
1.9 列表-排序
- 反向列表中元素 xxx.reverse()
nums = [110, 120, 119]
nums.reverse() # [119, 120, 110]
- 排序 xxx.sort()
1.10 列表-切片
列表[num1:num2:num3]
num1,num2都是列表的下標, num3是間隔, 返回一個新的列表
1.11 遍歷(循環)
1.12 傳遞
- 可變的值 list列表
如果這個變量存儲的是可變的值,然後傳遞給另外一個變量,此時變量指向同一塊內存空間,然後任意一方做了修改,都會影響這個變量
比如 在一個酒店中的一個房間居住,只有一臺電視,任何一個人換臺都會影響另一個人
- 不可變的值 數字、字符串、bool、None、元組
如果這個變量存儲的是不可變的值,然後傳遞給另外一個變量,此時,二者變量指向同一塊內存空間,然後,任何一方做了修改,該變量都會被重新復制,不會影響另一個變量
比如 在一個酒店中的兩個房間居住,每個房間都有一臺電視,任何一個屋中換臺均不影響他人
2 元組tuple
- Python的元組與列表類似,只是一點,元組裏的值不能修改。
- 元組使用小括號,列表使用方括號。
- 元組的功能 = 列表不修改的功能
3 列表和元素相互轉換
ls = list(元組)
元組轉列表tu = tuple(列表)
列表轉元組
註意:這兩個方法都是得到一個新的,不會修改原來的
4 字典dict
4.1 字典介紹
Python內置了字典,dict全稱dictionary,在其他語言中也稱為map,使用鍵-值(key-value)存儲,唯一定位一個值,查找速度快。
4.2 字典定義
- 格式
字典 = {key1 : value1, key2 : value2 ......}
- 鍵和值
- 鍵必須是唯一的,但值則不必
- 值可以取任何數據類型,如字符串,數字或元組
4.3 增/改 字典[鍵] = 值
如果次key不存在,就是往字典裏新增一個鍵值對;否則,就是修改
一個key只能對應一個value,多次對一個key放入value,後面的值會把前面的值覆蓋
student1 = {‘id‘: 1, ‘name‘: ‘老王‘}
# 新增
student1[‘age‘] = 22
print(student1) # {‘id‘: 1, ‘name‘: ‘老王‘, ‘age‘: 22}
# 修改
student1[‘id‘] = 10
student1[‘id‘] = 7
print(student1) # {‘id‘: 7, ‘name‘: ‘老王‘, ‘age‘: 22}
4.4 刪
- 字典.pop(鍵)
根據鍵,刪除指定的值,並將此值返回
- del 字典[鍵]
根據鍵,刪除指定的值,無返回值
- 字典.clear()
清空字典裏的鍵值對
4.5 查
- 值 = 字典[鍵] 根據鍵查詢值
student1 = {‘id‘: 1, ‘name‘: ‘老王‘}
sid = student1[‘id‘] # 1
# 如果鍵不存在,則報錯 KeyError
- 字典.get(鍵[,默認值]) 如果key不存在,可以返回None,或者自己指定的value
student1 = {‘id‘: 1, ‘name‘: ‘老王‘}
sid = student1.get(‘id‘) # 1
sid = student1.get(‘ids‘) # None
sid = student1.get(‘ids‘, ‘未知‘) # 未知
4.6 判斷
key in dict
如果鍵在字典中存在,返回True
否則,返回False
4.7 遍歷(循環)
使用for
循環遍歷的三種方式
for key in dict:
print(‘%s:%s‘%(key,dict[key]))
# dict.keys() 以列表形式返回一個字典所有的鍵
# dict.values() 以列表形式返回一個字典所有的值
for key in dict.keys():
print(‘%s:%s‘%(key,dict[key]))
# 推薦
# dict.items() 以列表形式返回可遍歷的(鍵, 值) 元組數組
for k,v in dict.items():
print(‘%s:%s‘%(k,v)
4.8 其他
- dict.copy()
- 返回一個新的字典,內容一樣,地址不同!!!
- dict.fromkeys(seq[, val]))
- 創建一個新字典,以序列 seq 中元素做字典的鍵,val 為字典所有值對應的初始值
d1 = dict.fromkeys([‘a‘,‘b‘,‘c‘],‘老王‘)
print(d1) # {‘a‘: ‘老王‘, ‘b‘: ‘老王‘, ‘c‘: ‘老王‘}
- dict.setdefault(key, default=None)
- 和get()類似, 但如果鍵不存在於字典中,將會添加鍵並將值設為default
- 如果鍵在字典中,返回這個鍵所對應的值。
- 如果鍵不在字典中,向字典中插入這個鍵,並且以default為這個鍵的值,並返回 default。default的默認值為None
- dict.update(dict2)
- 把字典dict2的鍵/值對更新到dict裏
4.9 字典與列表對比
- 語法上
- ls = [v1, v2 ...]
- dict = {k1:v1, k2:v2 ...}
- 速度上:dict>list
- 內存:list占用相對dict較小
- 存儲內容:都可以存儲任意類型的變量
- 獲取方式:list-下標 dict-鍵
5 集合set
set是一個無序,不能重復的集合容器,所以可以用來過濾重復元素。
- add(obj) 新增
- remove(obj) 移除
- | 並集
- & 交集
- 差集
列表,元組,字典,集合 的比較
- list 可變,有序,可重復
- tuple 將list的[]變成(),不可變,有序,可重復
- set 可變,無序,不可重復
- dict 鍵值對,可變
list() tuple() set()三者可相互轉換
01.Python基礎-3.集合容器