1. 程式人生 > >[Python] Python資料型別(一) 整數、浮點數和字串

[Python] Python資料型別(一) 整數、浮點數和字串

1.識別符號和關鍵字:

為物件引用賦予的名稱稱為識別符號,有效的識別符號包括引導字元和後續字元,只要是Unicode編碼的字母,都可以充當引導字元,後續字元可以是數字,下劃線,或任意非空字元;
1.識別符號大小寫敏感;
2.識別符號不能使用關鍵字;
3.識別符號不能和預定義的識別符號同名;如NameError…
4.關於下劃線的使用,應避免名稱的前後都有下劃線_,因為Python在定義各種特殊方法時,使用的這種格式。
5.規範起見,識別符號應以字母、下劃線開頭。

2.Integral型別

Python提供了兩種型別的Integral型別,int和bool,表示整數和布林值。需要注意的是,int和bool值是固定的,一旦設定,就不能改變,但由於Python提供了增強的賦值操作符,因此不會導致實際問題,可以像其他語言那樣修改int值。

1.bool

bool值只有兩個:True和False,還可以用1表示True,0表示False。

2.int

整數(int)和其他語言中的int不同,Python中整數的大小隻受限於機器的記憶體;二進位制數以0b引導,八進位制數以0o引導,十六進位制數以0x引導;
所有內建的資料型別都可以作為函式並不帶任何引數進行呼叫,如:
x = int(),即x=0;
*內建型別和標準庫資料型別區別:前者可以直接使用,後者需要匯入相關的模組,並且需要使用模組名對資料型別名進行限定。

2.1.常用操作符和函式:

x/y:    x除以y,返回的總是一個浮點數
x // y: x除以y,捨棄小數部分,使得結果總是整數;
x**y :  計算x的y次冪
-x: 對x取負數
+x:不做任何操作
abs(x)
: 求絕對值 divmod(x,y): 以二元組的形式返回x除以y的商和餘數 pow(x,y): x的y次冪 pow(x,y,z): x**y%z round(x,n): 四捨五入

3.浮點型別

Python提供了三種浮點值:內建的float和complex,標準庫的decimal.Decimal類,這三種資料型別都是固定的。
float:存放雙精度浮點型別。
複數(complex)存放一對浮點數,一個表示實數,一個表示虛數,如:3.5+2j;
decimal.Decimal:比float更精確,但是比浮點數的計算較慢。decimal用於提供固定的十進位制數,使用Decimal時,需要匯入decimal:

import decimal

獲取decimal物件時:a = decimal.Decimal(6788)
decimal.Decimal的約束:
1.如果decimal.Decimal()作為**操作符左邊的數字,則右邊的運算元必須為整數;
2.如果pow()函式左邊的數為decimal.Decimal(),則第二個、第三個也必須為整數;

4.字串

使用str表示字串型別,使用引號建立字串物件,如:s = ’string‘,s=”just”,也可以使用三個引號’‘’或“”“來建立,只要保持起始端和終端匹配即可。
如果需要輸出’‘“”,使用轉義字元\進行轉義後輸出:s = "hahhaha.\"interest\""
跨行輸出字串:如果一個字串過長,需要多行輸出,有兩種方式:
第一種:使用+\連線

s = "abcdefghijklmnopqrst"+\
                 "uvwxyz"

第二種:

s=("Python is interesting"
       ".very good")

4.1.字串的比較

比較字串常用的操作符有:<,<=,==,!=,>,>=,比較字串時,會在記憶體中逐個位元組對字串進行比較,返回bool值。

4.2.字串的分片和步距

在說分片操作符之前,先來了解下字串的索引位置,字串s中的字元從左至右依次為s[0],s[1],……s[n],還有一種表示法,從右至左依次是s[-1],s[-2],…..s[-n+1];因此,s[0]總是表示第一個字元,s[-1]總是表示最後一個字元。

分片操作符:[],可以提取字串中的一個字元,還可以提取一個分片。
步距:分片操作符中用於指定間隔多少個字元的數字。
常用格式:
ch[start:end] #提取ch字串中start-end位置的字串,下同
ch[start:end:step]
ch[start]
ch[start:]
ch[:end]    #提取ch字串中0-end位置的字串
ch[:]   #提取整個字串

如:

>>> s="wonderful Tonight"        
>>> s[:4]        #0-4的字元
'wond'

>>> s[3:12:2]    #每隔2個字元提取3-5位置的字元           
'dru o'
>>> s[::-1]     #如果給定步距為負值,則起點索引值為-1.因此可以反轉字串               
'thginoT lufrednow'
>>> 

還可以使用分片操作符進行字串的插入:

>>>s = "i you"
>>> s[:2] +"love "+s[2:]             
'I love you'
>>> 

不過這種連線方式並不高效,連線字串時使用str.join()方法。

4.3常用字串操作符和方法

字串是固定序列,所以可用於固定序列的操作符都可用於字串:如in 成員關係符,*=,+=,…下面一一說明。
*= :用於複製字串:

>>> s = "heart of gold“ 
>>> s *= 4   #將s複製四次
>>> s    
'heart of goldheart of goldheart of goldheart of gold'
>>> 

+=:用於追加字串:

>>> s = "Python,"
>>> s+=" nice"
>>> s
'Python, nice'
>>> 

4.3.1.str常用方法

連線字串:
str.join(): #連線字串,以序列作為引數,並將其進行連線,其中呼叫該方法的字串作為分隔符新增在每項中間,如:

>>> " ".join(s)      
'P y t h o n'
>>> 
>>> s=["one","two","Three","four"]
>>> "--".join(s)  
'one--two--Three--four'
>>> 

反轉字串:str.join()str.reversed()配合使用:

>>> s = "i love study" 
>>> "".join(reversed(s)) 
'yduts evol i'
>>> 

搜尋字串:
str.index(i,start,end):返回子字串的索引位置,如果失敗則產生ValueError異常。
str.find(i,start,end):返回子字串的索引位置,如果失敗則產生-1;
其中第二個、第三個引數可選,如:

>>> s = "what i want"   
>>> s.index("i")  
5
>>> 

str.rindex(i,start,end):從右邊開始搜尋自字串i;
str.rfind(i,start,end):從右邊開始搜尋自字串i;
str.endswith(i,start,end):判斷字串是否已i結尾,第二第三個引數可選;
str,startswith(i,start,end):判斷字串是否已i開頭,第二個第三個引數可選;
str.count(i,start,end):判斷子字串出現的次數,第二個第三個引數可選;如:
s.count("s",5) = s[5:].count("m");
替換字串:
str,replace(t,u,n):返回s的副本,使用t替換u,最多可替換n次,n可選;
拆分字串為元組:
str.partition(t):返回一個被t分隔的3個字串的元組,如果t不在s中,則返回s和兩個空串,如:

>>> s = "what i want"
>>> s.partition("i")
('what ', 'i', ' want')
>>> s.partition("c")
('what i want', '', '')
>>> 

分隔字串:
str.split(t,n):返回一個字串列表,其字串s被t分隔,最多分隔n次,t可選,n可選,t不指定時從空白字元處切割。如:

>>> s = "what i want"
>>> s.split("a")    
['wh', 't i w', 'nt']
>>> 

清空兩端空白字元:
str.strip();
str.lstrip():清空左端空白字元
str.rstrip():清空右端空白字元