python基礎之資料型別

Sam_A發表於2022-02-05

一、基礎資料型別

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))

 

重要setdict 的注意點

'''

字典的鍵和 集合的值 有資料型別上面的要求:

允許的型別範圍)不可變的資料型別: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)

相關文章