一、基礎資料型別
1.數字型別(int float bool complex)
(1)int 整數(正整數 0 負整數)
type 獲取值的型別
res = =type(invar)
print(res)
id 獲取值的地址
res = id(intvar)
print(res)
二進位制整形
intvar = 0b110
print(intvar)
print(type(intvar))
print(id(intvar))
八進位制整形
intvar = 0o127
print(intvar)
print(type(intvar))
print(id(intvar))
十六進位制
intvar = 0xff
promt(intvar)
print(type(intvar))
print(id(intvar))
小結:
二進位制1+1=10
八進位制7+1=10
十六進位制f+1=10
(2) float 浮點型(小數)
浮點型簡單來說就是表示帶有小數的資料,而恰恰小數點可以在相應的二進位制的不同位置浮動,可能是這樣就被定義成浮點型了。
# 表達方式1
floatvar = 3.6 print(floatvar,type(floatvar))
# 表達方式2 科學計數法
floatvar = 5.7e5 # 小數點右移5位
floatvar = 5.7e-5 # 小數點左移5位
print(floatvar,type(floatvar))
(3)bool 布林型(True 真的 ,False 假的)
boolvar = Ture
print(boolvar,type(boolvar))
(4) complex 複數型別
'''
3 + 4j
實數+虛數
實數:3
虛數4j
j : 如果有一個數他都平方等於-1,那麼這個數就是j,科學家認為有,表達一個高精度的型別
'''
表達方式1
complexvar1 = 3 + 4j
complexvar2 = -3j #虛數部分可以是負數 是複數型別
print(complexvar1,type(complexvar1))
print(complexvar2,type(complexvar2))
表達方式2
'''
complex(實數,敘述) ==> 複數
'''
res = complex(3,4)
print(res,type(res))
2.字串(str)型別
'''
有引號的就是字串,單引號,雙引號,三引號
# 轉義字元\ +字元
(1)可以將無意義的字元變得有意義
(2)可以有意義的字元變得無意義
\n: 換行
\r\n:換行
\t : 縮排(水平製表符) 預設四個空格距離
\r : 將\r 後面的字串拉到了當選行的行首
'''
(1)單引號的字串
strvar = '生活不止眼前的苟且' print(savar,type(strvar))
(2)雙引號的字串
strvar = ''還有詩和遠方的田野''
print(savar,type(strvar))
strvar = ''還有詩和\n遠方的田野''
print(strvar)
#可以將無意義的字元變得有意義
strvar = ''還有詩和\r\n遠方的田野''
print(strvar)
strvar = ''還有詩和\t遠方的田野''
print(strvar)
strvar = ''還有詩和\r遠方的田野''
print(strvar)
strvar = ''還有詩和\n遠方的\r田野''
print(strvar)
#可以將有意義的字元變得無意義
strvar = ''還有詩\"遠\"方的田野''
print(strvar)
(3)三引號的字串(可以支援跨行效果)strvar = '''
strvar = '''
生活就像醉酒 表面上說不要 身體卻很誠實 '''
print(strvar)
#下面這麼寫也是可以的
stavar = '''
生活就像"醉"酒
表面上說'不'要
身體卻很誠實
'''
print(strvar)
python中單引號雙引號沒有區別 但是在其他語言中有區別
比如說php
$a = "123"
"{$a} => "123"
'{$a}' => '($a)' 單引號當做普通字串
(4)元字串 r"字串" 原型化輸出字串
strvar = 'D:\python32_python\tar02' #這是個路徑很明顯這個 字串前面沒加r 很亂輸出不對
print(stavar)
r"字串" 原型化輸出字串
strvar = r'D:\python32_python\tar02'
print(strvar)
#這回就對了
(5)字串的格式化
比如說小張買了三個藥水 李四買了 四個藥水 張三買了五個藥水 你會發現 這些話整體來說除了數量在改變 字串並沒有改變
'''
%d 整型佔位符
%f 浮點型佔位符
%s 字串佔位符
'''
strvar = '張三昨天買了%d個風油精,洗澡' %(2)
print(strvar)
接下倆看這個
%2d 佔兩位(不夠兩位拿空格來部位)原字串在右面
strvar = '張三昨天買了%2d箱風油精,洗澡' %(2)
print(strvar)
# %-2d佔兩位(不夠兩位拿空格來部位)原字串在左面
strvar = '張三昨天買了%-2d'箱風油精,洗澡' %(2)
print(strvar)
# %f 浮點型佔位符 (存在四捨五入的情況,預設保留6位小數)
strvar = '閻王爺一個月開%f工資'%(9.9)
print(strvar)
# 我麼會發現 列印出來的結果是這樣的 閻王爺一個月9.900000工資 小數點後保留了6位小數
# 下面有一種方法可以保留小數點後兩位小數
# %.2f 保留小數點後兩位小數
strvar = '閻王爺一個月開%.2f工資'%(9.9178)
print(strvar)
%.xf x = 任意數字 是幾小數點後面就保留幾位小數
# %s 字串佔位符
strvar = "%s最喜歡在電影院尿尿" %("李白")
print(strvar)
#綜合案例
strvar = "%s在水裡%s被發現了,罰了%.2f元,並且做了%d個俯臥撐" ("張三","拉屎",500.129,50000)
print(strvar)
# 如果忘記用什麼佔位符,可以無腦用%s。
strvar = "%s在水裡%s被發現了,罰了%s元,並且做了%s個俯臥撐" ("張三","拉屎",500.129,50000)
print(strvar)
3.列表型別 (list)
定義一個空列表
listvar = []
print(listvar,type(liatvar))
定義普通列表
listvar = [98,6.9,Tyre,12-90,"張三"]
獲取列表中的元素
在python分為 正向索引和逆向索引
正向索引 (從0開始) 0 1 2 3 4 ......
0 1 2 3 4
listvar = [98,6.9,Tyre,12-90,"張三"]
-5 -4 -3 -2 -1
逆向索引 (只有python可以)(從-1開始) -1 -2 -3 -4 -5
len() 獲取容器型別資料中元素的個數
listvar = [98,6.9,True,12-90j,"張三"]
print(len(listvar))
# python逆向索引的特點,瞬間得到列表最後一個索引
listvar = [98,6.9,True,12-90j,"張三"]
print(listvar[-1])
# 修改列表中的元素
listvar = [98,6.9,True,12-90j,"張三"]
l1= listvar[3] = "大象"
print(l1)
4.元組型別(tuple)
特徵:只能獲取,不可以修改,有序
定義一個元組
tuplevar = ('張三','李四','熊大')
print(tuplevar,type(tuplevar))
獲取元組中的元素
正向索引
#下面要獲取熊大
tuplevar = ('張三','李四','熊大')
print(tuplevar[2])
逆向索引
逆向獲取熊大
tuplevar = ('張三','李四','熊大')
print(tuplevar[-1])
修改元組中的元素 :元組中的值不能修改
注意點
我們發現下面列印結果並不是元組型別
tuplevar = (1)
print(tuplevar)
print(type(tuplevar))
#列印結果
1
<class 'int'>
接下來我們看下一個
tuplevar = (1,)
print(tuplevar)
print(type(tuplevar))
#列印結果
(1,)
<class 'tuple'>
我們發現新增個逗號 列印結果是元組型別
總結: 逗號才是區分是否是元組的識別符號
定義空元組
tuplevar = ()
print(type(tuplevar))
這個列印結果也是元組 但是沒加逗號 這是為什麼呢 ?
因為裡面沒有值 是一個空元組
字串型別 (補充)
'''
特徵:可獲取,不可修改,有序
'''
正向索引
strvar = "大妹子,我 一看 你,我就心跳加速,喘不上氣兒" print(stavar[3])
#列印結果:,
我們發現 空格和符號都佔有一個索引位置
5.集合型別 set(交差並補)
setvar = {"Amy","Sam","謠","帥"}
print(setvat,type(setvar))
我們列印發現每次的結果都不一樣,所以說集合是無序的
獲取集合中的元素
setvar = {"Amy","Sam","謠","帥"}
setvar[1]
獲取我們發現報錯 那是為什麼呢?
剛剛說過集合是無序的所以說 沒有辦法按照索引來獲取集合中的元素
接下來再看幾行程式碼
setvar = {"Amy","Sam","謠","帥","Sam"}
print(setvar)
我們列印完發現 原本集合中有兩個Sam 卻只輸出了一個Sam 這說明集合具有自動去重功能
我們再看看下面的程式碼 看看可不可以定義空集合
setvar = {}
print(setvar,type(setvar))
列印結果報錯 顯然這樣是不可以定義空集合的 ,接下來讓我們看看如何定義一個空集合?
setvar = set()
print(setvar,type(setvar))
列印返回集合型別 定義空集合只需要set+()只有這一種方法可以建立空集合
總結:
6.字典型別 (dict)
'''
鍵值對儲存的資料
dictvar = {鍵1:值1,鍵2:值2,......}
3.6版本之前,完全無序
3.6版本之後,儲存的時候,保留了字典定義的字面順序,在獲取記憶體中的資料時重新按照字面順序做了排序,所以看起來有序,實際上儲存時還是無序。
'''
接下來我們建立一個字典
dictvar = {"top":"the shy","middle":"肉雞","bottom":"jacklove","support":"吃飽飽_嘴裡種水稻"}
print(dictvar,type(dictvar))
獲取字典中的值
dictvar = {"top":"the shy","middle":"肉雞","bottom":"jacklove","support":"吃飽飽_嘴裡種水稻"}
res = dictvar["middle"]
print(res)
修改字典中的值
dictvar["top"] = "the boy" print(dictvar)
定義空字典
dictvar = {}
print(dictvar,type(dictvar))
重要:set和dict 的注意點
'''
字典的鍵和 集合的值 有資料型別上面的要求:
(允許的型別範圍)不可變的資料型別:Number str tuple
(不允許的型別)可變的資料型別 :list set dict
字典的鍵有要求值沒有要求
字典的值可以任意換掉,但是鍵不可以。鍵就相當於一個人的身份證號
雜湊演算法的提出目的是讓資料儘量均勻的在記憶體當中分配,以減少雜湊碰撞,提升儲存分配的效率;雜湊演算法一定是無序的雜湊,所以集合 和 字典都是無序的
'''
字典允許的型別範圍
dictvar = {1:"abc",4.89:111,3+90j:666,False:333,"王文":"你好帥啊,我好喜歡哦,沒毛病",(1,2,3,4,5,6):9999}
print(dictvar)
集合允許的內容
setvar = {1,"a",4.56,9+3j,False,(1,2,3)}
print(setvar)