集合容器:列表 元組 列表和元組相互轉換 字典 set
列表:
用一對方括號[]表示 列表中可以存儲任何類型的數據
一般情況下一個列表存放的數據類型 都一樣 這樣便于對列表的操作
增:
list.append(value) 在列表尾部添加元素
value = list.insert(index) 根據索引向列表中插入元素
list.extend(list1) 向list追加list1中所有的元素 也是兩個列表相連接的意思
刪:
list.remove(value) 移除列表中某個元素
list.pop() 刪除列表末尾元素
list.pop(index) 根據索引刪除元素
del list[index] 根據索引刪除元素
查:
value = list[index] 根據索引查找元素
list.count(value) 統計列表中某個元素出現次數
index = list[value] 根據值來查找對應的索引
len(list) 列表長度
max(list) 列表中元素最大值 僅限于列表中都是數字的情況
min(list) 列表元素最小值
改: list[index] = value
切片: list[x:y:l] x:從索引幾開始(包含) y:到索引幾結束(不包含) l:每次切片的長度
常見的幾種情況
list = [1,2,3,4,5,6,7,8,9,0]
#從頭切到位
print(list[::]) #[1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
print(list[1:5:2]) #[2, 4]
print(list[0:5:2]) #[1, 3, 5]
print(list[::-1]) #[0, 9, 8, 7, 6, 5, 4, 3, 2, 1]
print(list[::-2]) #[0, 8, 6, 4, 2]
print(list[-2:1:-2])#[9, 7, 5, 3]
print(list[-2:1:2]) #[]若找不到則輸出空列表
print('*'*30)
判斷:
in 在則輸出Ture 否則返回False
not in 不在則輸出Ture 否則返回False
反轉:
reserve()
list.reverse() 對原列表倒敘排列
list.sort() 按順序排列
'''
#reverse = True 時倒序排列
list1 = [1,2,3,4,5,69,0,7,8,]
print(list1)
list1.sort()# list.sort()=list.sort(reserve = False)
print(list1)
list1.sort(reverse = True)#false 默認正序 Ture 默認倒序
print(list1)
'''
遍歷: for in while enumerate
'''
list1 = [1,2,3,4,5,6,7,8,9,0]
print('****************1、for 變量名 in list*******************')
for a in list1:
?print(a)
print('****************2、for index in range(list)*******************')
for a in range(len(list1)):
print('index-->%s,value-->%s'%(a,list1[a]))
print('****************3、while index < len(list)*******************')
a = 0
while a < len(list1):
print('index-->%s,value-->%s'%(a,list1[a]))
a+=1
print('****************4、for index,obj in enumerate(list)*******************')
for a,obj in enumerate(list1):
print('index-->%s,value-->%s'%(a,list1[a]))
'''
元組:
tuple用一對小括號()表示
元組和列表相似 但是元組是不可改變的
有查詢,判斷的操作
max(tup) min(tup) value = tup[index] len(tup) in not in
刪除的話是刪除整個列表
和列表一樣也可以使用四種方法遍歷
列表和元組相互轉換:
list = list(tup)
tup = tuple(list)
'''
list1 = [5,6,7]
tup = tuple(list1)
print(tup)
tup = (1,2,3)
list1=list(tup)
print(list1)
'''
字典:
用對花括號表示{key:value}
字典里面元素都是鍵值對的形式存在 key必須是唯一的 value可以是任何類型
增(改):
map('key') = value 若字典中沒有該鍵則添加 若有則更新此鍵對應的值
刪:
map.pop(key) 根據鍵刪除元素 并將此元素返回
map.popitem() 隨機刪除一個鍵值對
del map[key] 根據鍵刪除元素
map.clear() 清空字典
查:
value = map[key] 根據鍵查詢值 若無此鍵報錯
value = map.get(key,[默認值]) 如果key不存在,可以返回None,或者自己指定的value
len(map) 字典中鍵值對的個數
str(map) 輸出字典可打印的字符串表示
map.keys() 輸出所有鍵
map.values() 輸出所有值
map.items() 輸出所有鍵值對
判斷: in not in
遍歷:for循環遍歷的三種方式
'''
map1 =? {'a':'a','b':'b','c':'c','d':'d'}
for a in map1.keys():
print('key-->%s,value-->%s'%(a,map1[a]))
print('***********************************')
for a in map1:
print('key-->%s,value-->%s'%(a,map1[a]))
print('***********************************')
for k,v in map1.items():
print('key-->%s,value-->%s'%(k,v))
'''
其他操作:
map2 = map1.copy() 返回一個新的字典,內容一樣,地址不同
dict.update(dict2) 把字典dict2的鍵值對更新到dict里
和list比較,dict有以下幾個特點:
查找速度極快,不會隨著key的增加而變慢;
需要占用大量的內存,內存浪費多。
而list:
查找和插入的時間隨著元素的增加而增加;
占用空間小,浪費內存很少。
所以,dict是用空間來換取時間的一種方法。
set:
set = {值1,值2,.....值}
set是無序的 元素不可重復的集合 可以用來過濾重復元素
增:
set.add(value) 向set中添加元素
set.update(value) 將一個可迭代的內容,一一加入set中
刪:
set.pop() 刪除任意一個值
set.discard(value) 刪除指定元素 若無此元素也不報錯
set.remove(value) 刪除指定元素 若無此元素報錯
set.clear() 清空set集合
其他:
| 并集
& 交集
intersection 交集函數 print(set.union(set1))
- 差集
difference 差集
in 判斷
union 聯合
issubset 子集
issuperset 父集
多維:
多維列表,元組
就是列表里套列表 這里以列表為例子
'''
list1 = [[1,2],[1,2,3],[1,2,3,4,],[1,2,3,4,5]]
#遍歷此列表
x = 0
#外層循環遍歷行
while x < len(list1):
y = 0
#內層循環遍歷列
while y < len(list1[x]):
print('x-->%s,y-->%s,xy-->%s'%(x,y,list1[x][y]))
y+=1
x+=1
'''
傳遞:
可變類型:列表 字典 set
兩個變量引用同一個元素時 地址值是相同的,
當一個變量值發生變化另一個變量值 也會發生變化
不可變類型:int float str bool None 元組
兩個變量引用一個值時,地址值時相同的修改一個變量值,
不會影響另外一個變量值
'''
#不可變類型
a = 1
b = a
print(a)
print(id(a))
print(b)
print(id(b))
print('**********************')
a = 2
print(a)
print(id(a))
print(b)
print(id(b))
print('**********************')
#可變類型
set = {1,2,3,4,5,56}
set1 = set
print(set)
print(id(set))
print(set1)
print(id(set1))
print('**********************')
set.pop()
print(set)
print(id(set))
print(set1)
print(id(set1))