Python基礎數據類型之int,str,bool及常用方法 ...
1,int型:
s = 1 print(s,type(s))
1 <class 'int'>
int是整形,例如1,2,3等整數,主要進行運算。
2,str(字元串)型:
str1 = 'abcdef' print(str1,type(str1))
abcdef <class 'str'>
str是非常常用的一種數據類型,有許多種操作方法:
(1)索引與切片
索引
str可以通過索引找到某個元素,例如:
str1 = 'abcdef' print(str1[1])
b
str1 = 'abcdef' print(str1[-1])
f
需註意:
正向索引是從0開始,即第一個元素a的索引為0。
逆向索引是從-1開始,即str1[-1] = 'f'
切片
切片是對字元串操作非常常用的一種方法,可以截取字元串任意一部分。
切片方法及參數為:
str[起始索引:截止索引:步長]
註意:
起始索引到截止索引是一個左閉右開的範圍,即包括起始索引的元素,但不包括截止索引的元素
步長可以設定,預設為1;
str[起始索引:] ——> 由起始索引到字元串最後一個元素
str[:截止索引] ——> 由字元串第一個元素到截止索引前一個元素
str[:] ——> 整個字元串
str1 = 'abcdef' str2 = str1[1:3] print(str2)
bc
(2)find(),index()
這兩個方法是通過元素來找到對應的索引:
str1 = 'abcdef' print(str1.find('c')) print(str1.index('c'))
2
2
不同的是,如果要找的元素不在這個字元串里,find會返回 -1 ,而index則會報錯
str1 = 'abcdef' print(str1.find('g')) print(str1.index('g'))
-1
ValueError: substring not found
(3)upper(),lower()
upper,字元串內英文字母全部大寫。
lower,字元串內英文字母全部小寫。
str1 = 'abcdef' print(str1.upper()) print(str1.lower())
ABCDEF
abcdef
字元串內還包含其他內容如漢字或者數字不產生影響:
str1 = '123abcdef小蘇打' print(str1.upper()) print(str1.lower())
123ABCDEF小蘇打
123abcdef小蘇打
(4)startswith(),endswith()
startswith,判斷字元串是否以...開頭。
endswith,判斷字元串是否以...結尾。
這兩種方法可切片判斷,返回類型為布爾值
str1 = 'abcdef' print(str1.startswith('a')) print(str1.endswith('g'))
True
False
str1 = 'abcdef' print(str1[1:].startswith('a')) print(str1[2:5].endswith('e')) False True
(5)captilize()
captilize的作用是首字母大寫,其他字母小寫
str1 = 'abcdef' print(str1.capitalize()) Abcdef
如果字元串開頭第一個元素不是字母,則不變
str1 = '123abcdef小蘇打' print(str1.capitalize()) 123abcdef小蘇打
(6)swapcase()
swapcase的作用是將字元串內的字母元素大小寫反轉,即'A'—>'a','b'—>'B'
str1 = 'abCdEf' print(str1.swapcase()) ABcDeF
(7)replace()
replace是代替的意思,這個方法的用法及參數為:
str.replace(old,new,n)
old : 舊的內容,被替換的內容
new : 新的內容,用來替換舊內容的新內容
n :替換次數,可以不寫(預設值為-1,全部替換)
str2 = 'abcabcabc' print(str2.replace('a','A',2)) AbcAbcabc
(8)center()
center參數如下:
str.center(width,填充物)
具體含義是:返回一個以 原字元串 居中,以 填充物 填充至長度為 width 的一個字元串
如果 width 小於 原字元串 長度,則不會填充,仍是原字元串;填充物 預設為 空格,即 ' '
str2 = 'Hello Python' print(str2.center(40,'*')) **************Hello Python**************
(9)strip(),lstrip(),rstrip()
strip()的作用是去除字元串首尾的 空格,換行符, Tab等
lstrip(),即 left strip(),作用是去除字元串左邊(首)的空格,換行符,Tab等
rstrip(),即 right strip(),作用是去除字元串右邊(尾)的空格,換行符,Tab等
str2 = ' Hello Python ' print(str2) print(str2.strip()) print(str2.lstrip()) print(str2.rstrip()) Hello Python Hello Python Hello Python Hello Python
註意:
strip()中可以傳入參數以自定義去除:
str.strip(參數),去除開頭和結尾的 ‘參數’,直到不是‘參數’為止
str2 = '***Hello Python***' print(str2.strip('*')) Hello Python
另外,如果參數為多個字元,會將其分割成一個一個字元進行去除
str2 = 'Hello Python' print(str2.strip('Heon')) llo Pyth
所以多個字元沒有順序之分,也就是說,去除'abc'與去除'cba','acb' 的結果是一樣的
(10)split()
split()的作用是分割字元串,預設以空格分割,分割完返回的數據類型為列表list
split()參數有兩個,split(分割符,次數n),即以 分割符 對原字元串分割 n 次
str2 = 'Hel lo Pyt hon' print(str2.split(' ',2)) ['Hel', 'lo', 'Pyt hon']
此外,還有一個從右側開始的分割函數 rsplit(),用法相同,但是從右往左計數分割
str2 = 'Hel lo Pyt hon' print(str2.rsplit(' ',2)) ['Hel lo', 'Pyt', 'hon']
如果字元串第一個元素(最後一個元素)就是分割符,則會首先(最後)分割出一個空字元串 ‘’ 作為列表的第一(最後)一個元素
str2 = '*Hel*lo*Py*thon*' print(str2.split('*')) ['', 'Hel', 'lo', 'Py', 'thon', '']
(11)format()
這裡只說字元串格式化的三種用法:
①按順序填充
s = 'my name is {}, age {}'.format('Mike',18) print(s) my name is Mike, age 18
②按索引填充
s = 'my name is {1}, age {0}'.format(20,'Cc') print(s) my name is Cc, age 20
③按關鍵字填充
s = 'my name is {name}, age {age}'.format(age =20,name = 'Cc') print(s) my name is Cc, age 20
有時間再補充
(12)isdigit(),isalpha(),isalnum()
isdigit() 判斷字元串是否全部都是數字如'123'
isalpha() 判斷字元串是否全部由字母組成如'abc'
isalnum() 判斷字元串是否全部由 字母或數字 組成如'123abc'
s1 = '123' s2 = 'abc' s3 = '123abc' print(s1.isdigit(),s1.isalpha(),s1.isalnum()) print(s2.isdigit(),s2.isalpha(),s2.isalnum()) print(s3.isdigit(),s3.isalpha(),s3.isalnum()) True False True False True True False False True
3,bool型
bool即布爾型,只有True和False兩個值,用於邏輯判斷對與錯,常與if,while連用:
while 1 < 2 : if 2 < 3 : print('a') if 4 < 3 : print('b') break a
int型轉bool型:
如果要判斷的int型不等於0,則為True;等於0,則為False
if 0.01 : print('1正確') if 0 : print('2正確') if -0.1 : print('3正確') 1正確 3正確
str型轉bool型:
如果字元串不為空,則為True;為空則為False
if '' : print('為空可以輸出') if 'a' : print('不為空可以輸出') 不為空可以輸出