python-數據類型總結 (面試常問)

數字類型總結

一個值 多個值
整型/浮點型/字符串 列表/字典/元祖/集合
有序 無序
字符串/列表/元祖 字典/集合
可變 不可變
列表/字典/集合 整型/浮點型/字符串

拷貝

  • ==拷貝/淺拷貝/深拷貝都是針對可變類型數據而言的==
l1 = ['a','b','c',['d','e','f']]
l2 = l1

l1.append('g')

print(l1)  # ['a','b','c',['d','e','f'],'g']
print(l2)  # ['a','b','c',['d','e','f'],'g']

總結:若是l2是l1的拷貝對象,若l1內部的任意數據類型的元素變化,則l2內部的元素也會跟着改變,由於可變類型,值變id不變.app

淺拷貝

import copy
l1 = ['a','b','c'['d','e','f']]
l2 = copy.copy(l1)

l1.append('g')

print(l1)  # ['a','b','c'['d','e','f'],'g']
print(l2)  # ['a','b','c'['d','e','f']

l1[3].append('g')
print(l1)  # ['a','b','c'['d','e','f','g'],'g']
print(l2)  # ['a','b','c'['d','e','f','g']]

總結:若是l2是l1的淺拷貝對象,若l1內的不可變元素髮生了改變,l2不變;若是l1內的可變元素髮生了改變,則l2也會跟着改變.code

深拷貝

import copy
l1 = ['a','b','c'['d','e','f']]
l2 = copy.deepcopy(l1)

l1.append('g')

print(l1)  # ['a','b','c',['d','e','f'],'g']
print(l2)  # ['a','b','c'['d','e','f']]

l1[3].append('g')

print(l1)  # ['a','b','c'['d','e','f','g'],'g']
print(l2)  # ['a','b','c'['d','e','f']]

總結:若是l2是l1的深拷貝對象,若l1內的不可變類型元素髮生改過,l2不會變;若是l1內的可變類型元素髮生了變化,l2也不會改變,即l2永遠不會由於l1的變化而變化.對象

相關文章
相關標籤/搜索