python學習第七天 基礎數據類型補充 深淺copy 集合 關鍵字後面加可叠代對象
在基礎數據類型中可能遇到的坑:
元組:
tuple1=(1) 的數據類型是int , tuple2=(‘alex‘)的數據類型是str 等
tuple1=(1,) 和 tuple2的數據類型是 tuple
列表:
列表與列表之間可以相加,但不可以減(面試題)
list1=[1,2,3] list2=[‘a‘,‘b‘] list3=list1+list2 print(list3) #[1, 2, 3, ‘a‘, ‘b‘]
對於可變數據類型容易遇到的坑:
列表: 在for循環中刪除列表中的元素,索引會跟著變化
# 刪除列表中偶數索引對應的元素 # 方法1:新建一個列表,將奇數索引對應的元素添加進去 list1=[1,2,3,4,5,6,7] list2=[] for i in list1: if list1.index(i) % 2 == 1: list2.append(i) print(list2
# 方法2:從列表的最後開始刪 list1=[1,2,3,4,5,6,7] for i in range(len(list1)-1,-1,-1): if i % 2 == 0: list1.pop(i) print(list1)
# 方法3 # list1=[1,2,3,4,5,6,7] # del list1[0::2] # print(list1)
字典: 在for循環中刪除字典中的鍵值對,for循環會報錯
# 刪除字典中含k的鍵 # 方法1:將keys提取到列表中,循環去除 dic={‘k1‘:1,‘k2‘:2,‘name‘:3} list1=list(dic.keys()) for i in list1: if ‘k‘ in i: dic.pop(i) print(dic)
# # 方法2 # dic={‘k1‘:1,‘k2‘:2,‘name‘:3} # dic2={} # for k in dic.keys(): # if ‘k‘ not in k: # dic2.setdefault(k,dic[k]) # print(dic2)
創建字典的3種方法(面試題)
1.dic1={}
2.dic2=dict()
3.dic3=dict.fromkeys([‘key1‘,‘key2‘,‘key3‘],[ ]) fromkeys後面加可叠代數據
# dic3=dict.fromkeys([‘key1‘,‘key2‘,‘key3‘],[]) # dic3[‘key1‘]=‘alex‘ # print(dic3) #{‘key1‘: ‘alex‘, ‘key2‘: [], ‘key3‘: []}
區分:
# dic3=dict.fromkeys([‘key1‘,‘key2‘,‘key3‘],[]) # dic3[‘key1‘].append(‘1‘) # print(dic3) #{‘key1‘: [‘1‘], ‘key2‘: [‘1‘], ‘key3‘: [‘1‘]}
dic4=dict.fromkeys([‘key1‘,‘key2‘,‘key3‘],‘alex‘)
dic3=dict.fromkeys([‘key1‘,‘key2‘,‘key3‘],‘egon‘) print(dic3) #{‘key1‘: ‘egon‘, ‘key2‘: ‘egon‘, ‘key3‘: ‘egon‘}
集合:
集合的創建:
1. set1={1,2,3}
2.set2=set()
特點:
集合本身是可變數據類型 frozenset(set1): 凍集合,可以做字典的鍵
集合裏面的元素必須是不可變數據類型
集合是無序的
集合天然去重 (面試題)
# 方法1:利用set去重 list1=[‘alex‘,‘egon‘,1,‘alex‘] set1=set(list1) list1=list(set1) print(list1)
# 方法2:利用for循環去除 list1=[‘alex‘,‘egon‘,1,‘alex‘] list2=[] for i in list1: if i not in list2: list2.append(i) print(list2)
集合的增和刪
增:
add
update 相當於list 的extend
刪:
remove 按元素刪
pop 隨機刪
clear 清空
del 內存級別刪
數據類型之間的相互轉換:
1.
str-->list : split()
list-->str : join 列表裏只能由字符串類型的數據,有其他類型的數據會報錯
list1=[‘alex‘,‘egon‘,‘alex‘] s=‘_‘.join(list1) print(s)
2.
dict-->list:
list(dic.keys())
list(dic.values())
list(dic.ites())
list-->dict:
列表不能轉換為字典
3.
tuple-->list: list1=list(set())
list-->tuple: tuple1=tuple(list())
賦值=與深淺copy:
賦值 = : 數據一樣,id也一樣
淺copy: 數據一樣,裏層的id一樣,最外層的id不一樣 (int str bool類型沒有淺copy)
list1=[1,2,3] list2=list1.copy() print(id(list1),id(list2)) print(id(list1[0]),id(list2[0])) #1866482736328 1866482736264 #1887330528 1887330528
深copy:數據一樣,裏層外層的id都不一樣 (int str bool類型有深copy但id不變)
import copy list1=[1,2,3] list2=copy.deepcopy(list1) print(id(list1),id(list2)) print(id(list1[0]),id(list2[0]))
關於一些關鍵字後面加可叠代對象
enumerate
‘ ‘.join()
for循環
python學習第七天 基礎數據類型補充 深淺copy 集合 關鍵字後面加可叠代對象