一、基礎資料型別補充知識
1、fromkeys 將乙個物件作為values分別複製給另乙個物件,另乙個物件裡的元素作為keys[注意:此時作為values的元素位址相同,因為他們引用的是同乙個位址,所以values相同。
dic=dict.fromkeys([1,2,3,4,5,6,],)結果:對values 進行增加操作,每乙個配置的是相同的元素print(dic)
努力!')
2、迴圈列表和字典時,不能刪除元素或者鍵值對
如下:刪除key中帶』k'的,這種迴圈時刪除鍵值對會報錯,解決的方式是迴圈時,將key新增到新的列表,然後在遍歷列表,將key及其對應的values值刪除。
dic=正確的解決方法:for i in
dic.keys():
if'k'
ini :
deldic[i]
print(dic)
dic=3、0、空字串、空列表、空字典對應的布林值都是falsel=for i in
dic.keys():
if'k'
ini :
#print(dic)
for j in
l :
deldic[j]
print(dic)
結果顯示不加逗號,那麼這個資料型別就是它元素的型別
二、集合
1、集合是可變的資料型別,但是它裡面的元素是不可變的資料型別(所以集合不能作為字典的鍵)。集合裡的元素無序、不重複,這是他的特點。
集合的兩個特點:
1)不重複,把乙個列表轉化成集合,就自動去重了
2)關係測試,測試兩組資料之前的交集、差集、並集等關係
2、集合的方法:
1、集合的建立:
set1 = set()2、增加:addset2 =
print(set1,set2) #
set1 = set()updataset1.add(
'wyx
')
set1 = set()3、刪除:set .pop 隨機刪除,返回被刪除的元素set2 =
set1.add(
'wyx')
set1.update(
'laoshi
')
set .remove(『 『)按元素刪除,沒有會報錯
清空集合:set.clear()
del 刪除整個集合
set1 =
set1.remove('alex') # 刪除乙個元素
print(set1)
set1.pop() # 隨機刪除乙個元素
print(set1)
set1.clear() # 清空集合
print(set1)
del set1 # 刪除集合
print(set1)
4、集合不能修改:1、無序 2、元素不可變,改了就變了
5、查: 只能用for迴圈查
6、交集:
set1 =7、並集:union |set2 =
print(set1 & set2) #
print(set1.intersection(set2)) #
set1 =8、差集:set1獨有的,set2沒有set2 =
print(set1 | set2) #
print(set2.union(set1)) #
set1 =9、反交集^ :除了共有的元素之外的元素集合set2 =
print(set1 - set2) #
print(set1.difference(set2)) #
set1 =10、子集與超集set2 =
print(set1 ^ set2) #
print(set1.symmetric_difference(set2)) #
set1 =11、frozenset不可變集合,讓集合變成不可變型別。set2 =
print(set1
print(set1.issubset(set2)) #
這兩個相同,都是說明set1是set2子集。
print(set2 >set1)
print(set2.issuperset(set1)) #
這兩個相同,都是說明set2是set1超集。
s = frozenset('三、深淺copybarry')
print(s,type(s)) #
frozenset()
淺copy
l1 = [1,2,3,['對於淺copy來說,第一層建立的是新的記憶體位址,而從第二層開始,指向的都是同乙個記憶體位址,所以,對於第二層以及更深的層數來說,保持一致性。barry
','alex']]
l2 =l1.copy()
print(l1,id(l1)) #
[1, 2, 3, ['barry', 'alex']] 2380296895816
print(l2,id(l2)) #
[1, 2, 3, ['barry', 'alex']] 2380296895048
l1[1] = 222
print(l1,id(l1)) #
[1, 222, 3, ['barry', 'alex']] 2593038941128
print(l2,id(l2)) #
[1, 2, 3, ['barry', 'alex']] 2593038941896
l1[3][0] = '
wusir
'print(l1,id(l1[3])) #
[1, 2, 3, ['wusir', 'alex']] 1732315659016
print(l2,id(l2[3])) #
[1, 2, 3, ['wusir', 'alex']] 1732315659016
深copy
import對於深copy來說,兩個是完全獨立的,改變任意乙個的任何元素(無論多少層),另乙個絕對不改變。copy
l1 = [1,2,3,['
barry
','alex']]
l2 =copy.deepcopy(l1)
print(l1,id(l1)) #
[1, 2, 3, ['barry', 'alex']] 2915377167816
print(l2,id(l2)) #
[1, 2, 3, ['barry', 'alex']] 2915377167048
l1[1] = 222
print(l1,id(l1)) #
[1, 222, 3, ['barry', 'alex']] 2915377167816
print(l2,id(l2)) #
[1, 2, 3, ['barry', 'alex']] 2915377167048
l1[3][0] = '
wusir
'print(l1,id(l1[3])) #
[1, 222, 3, ['wusir', 'alex']] 2915377167240
print(l2,id(l2[3])) #
[1, 2, 3, ['barry', 'alex']] 2915377167304
7 python 資料型別
1.如果乙個字串包含很多需要轉義的字元,對每乙個字元都進行轉義會很麻煩。為了避免這種情況,我們可以在字串前面加個字首r,表示這是乙個 raw 字串,裡面的字元就不需要轉義了。例如 r 但是r 不能表示多行文字,怎麼解決 2.python在後來新增了對unicode的支援,以unicode表示的字串用...
7 python資料型別之集合set
資料型別之集合set set 不允許重複的無序集合,不能通過下標取值,因為無序 1 建立 建立空集合 s 預設型別為字典,所以不是空集合,空集合如下 s set s 字典是有鍵值對,集合沒有 s set 括號內可以接收可以迭代的元素,str list tuple dict 2 轉換 s 11,123...
7 Python基本資料型別 數字
在32位機器上,整數的位數為32位,取值範圍為 2 31 2 31 1,即 2147483648 2147483647 在64位系統上,整數的位數為64位,取值範圍為 2 63 2 63 1,即 9223372036854775808 9223372036854775807 例如 2 1 0 1 2...