四、Python數據類型
4.1、Python內置數據類型
- 整型:int
- 浮點型:float
- 布爾類型:bool
- 字符串:str
- 二進制類型:bytes、bytearray
- 復數:complex
- 列表:list
- 元組:tuple
- 字典:dict
a = 100 # 整型print(type(a))a = 100.0 # 浮點型print(type(a))a = True # 布爾類型print(type(a))a = '12345' # 字符串類型print(type(a))a = b'\x01\x02\x03\x04\x05\x06\x07\x08' # 二進制類型print(type(a))a = 5 + 2j # 復數print(type(a))a = [1, 2, 3, '123'] # 列表print(type(a))a = (1, 2, 3, '123') #元組print(type(a))a = {"A1":"B1","A2":"B2","A3":"B3"} # 字典print(type(a))
輸出:
<class 'int'>
<class 'float'>
<class 'bool'>
<class 'str'>
<class 'bytes'>
<class 'complex'>
<class 'list'>
<class 'tuple'>
<class 'dict'>
4.2、字符串類型
4.2.1、字符串定義
python 中的字符串字面量由單引號或雙引號括起來表示:
a = '12345'
print(a)
a = "12345"
print(a)
字符串也可以使用三個單引號或者三個雙引號括起來表示,這種方式支持換行符的輸入:
a = '''
鋤禾日當午,
汗滴禾下土。
誰知盤中餐,
粒粒皆辛苦。'''
等價于:
a = "鋤禾日當午,\n汗滴禾下土。\n誰知盤中餐,\n粒粒皆辛苦。\n"
4.2.2、字符串拼接
4.2.2.1、使用“+”拼接
str1 = "姓名:"str2 = "張三"print(str1+str2)
輸出:
姓名:張三
4.2.2.2、使用join函數拼接
- 使用join函數拼接的效率比使用“+”高很多,因為使用“+”會涉及很多內存復制以及垃圾回收操作
- join只接收一個參數,可以是元組、字典、列表、字符串等
- 雙引號""中的內容會拼接到每兩個字符串之間
string_a = " ".join(["I", "love", "python!"])print(string_a)string_b = "I"string_c = "love"string_d = "python!"string_e = "*".join([string_b, string_c,string_d])print(string_e)
輸出:
I love python!
I*love*python!
4.2.2.3、使用格式化輸入拼接
str1 = "姓名:"str2 = "張三"str3 = "%s%s 年齡:%d" % (str1, str2, 18)print(str3)
輸出:
姓名:張三 年齡:18
4.2.2.4、使用“*”拼接
“*”用于拼接多個相同的字符串,表示這個字符串重復n次:
a = "1234x"*3print(a)
輸出:
1234x1234x1234x
4.2.3、字符串格式化
4.2.3.1、格式化操作符:%
str1 = "姓名:"str2 = "張三"str3 = "%s%s 年齡:%d" % (str1, str2, 18)print(str3)
輸出:
姓名:張三 年齡:18
4.2.3.1、使用format函數
format函數可以通過指定位置和參數來格式化字符串,字符串中使用大括號“{}”表示.
- 使用位置格式化字符串,數字表示第幾個參數,0表示第一個參數,且0是必須得;
- 使用參數來格式化字符串:大括號“{}”中填寫參數,format中填寫參數對應的值;
str1 = "{0} love {1}!".format("I", "python")str2 = "{a} love {b}!".format(a="I", b="python")print(str1)print(str2)
輸出:
I love python!
I love python!
4.2.3.3、使用f-strings格式化
f-string,亦稱為格式化字符串常量(formatted string literals),是Python3.6新引入的一種字符串格式化方法,該方法源于PEP 498 – Literal String Interpolation,主要目的是使格式化字符串的操作更加簡便。f-string在形式上是以 f 或 F 修飾符引領的字符串(f’xxx’ 或 F’xxx’),以大括號 {} 標明被替換的字段;f-string在本質上并不是字符串常量,而是一個在運行時運算求值的表達式:
f-string在功能方面不遜于傳統的%-formatting語句和str.format()函數,同時性能又優于二者,且使用起來也更加簡潔明了,因此對于Python3.6及以后的版本,推薦使用f-string進行字符串格式化。
- f-string使用{}表示被替換字段,里面直接填入被替換內容,被替換內容可以是變量、表達式、函數
a = 1b = 2str3 = f"{a} + {b} = {a + b}"print(str3)
輸出:
1 + 2 = 3
- 可以使用冒號 : 后跟格式規范來指定數值或字符串的顯示方式
PI = 3.1415926print(f"PI的值約等于:{PI:.3f}") # 保留三位小數print(f"PI的值約等于:{PI:<.3f}") # 左對齊,保留三位小數print(f"PI的值約等于:{PI:>10.3f}") # 右對齊,總寬度10個字符,保留三位小數print(f"PI的值約等于:{PI:^10.3f}") # 居中對齊
輸出:
PI的值約等于:3.142
PI的值約等于:3.142
PI的值約等于: 3.142
PI的值約等于: 3.142
- 關于對齊,如果寬度不夠默認是補空格,我們也可以指定補充的字符:
PI = 3.1415926print(f"PI的值約等于:{PI:*>10.3f}") # 右對齊,總寬度10個字符,保留三位小數print(f"PI的值約等于:{PI:*<10.3f}") # 做對齊,總寬度10個字符,保留三位小數print(f"PI的值約等于:{PI:*^10.3f}") # 居中對齊,總寬度10個字符
輸出:
PI的值約等于:*****3.142
PI的值約等于:3.142*****
PI的值約等于:**3.142***
4.2.4、字符串處理常用函數
1) 大小寫轉換str.lower、str.upper以及str.casefold。
lower和casefold都可以把英文字符轉換成小寫,但是lower只能轉換英文字符,casefold還可以轉換其它語言的字符。
str1 = "Hello World!"print(str1.upper())print(str1.lower())print(str1.casefold())
輸出:
HELLO WORLD!
hello world!
hello world!
2) 字符串查找和替換
str1.find(substring, start, end)
功能:在字符串str1的起始位置start到結束位置end之間查找子字符串substring,start和end兩個參數可以省略,表示在整個字符串中查找
參數:substring表示要查找的子串 start表示字符串起始位置索引,從0開始 end表示字符串結束位置
str1 = "I love python!"print(str1.find("love")) # 在整個字符串中查找print(str1.find("love", 1)) # 從第一個字符之后開始查找print(str1.find("love", 1, 6)) # 從第一個字符和第6個字符之間查找print(str1.find("love", 2, -1)) # 從第2個字符和倒數第一個字符之間查找
str1.replace(old, new, count)
功能:將str1中的old字符串替換為new字符串,如果設置了第三個參數count,則表示最多替換count次
str1 = "I*love*python!"print(str1.replace("*", "-")) # 將str1中的所有“*”替換成“-”print(str1.replace("*", "-", 1)) # 將str1中的“*”替換成“-”且只替換一次
3)判斷字符串是否以指定字符串開頭或者結尾
str1.endwith(substring, start, end)
功能:判斷字符串str1的起始位置start到結束位置end之間的字符串,是否以substring結尾,start和end兩個參數可以省略
返回值:成功返回True,失敗返回False
str1.startwith(substring, start, end) 參數和返回值、用法與endwith相同
str1 = "music.wav"print(str1.endswith('.wav')) # 在整個字符串中判斷print(str1.endswith('.wav', 3)) # 從第三個字符串開始查找print(str1.startswith('m')) # 判斷字符串是否以‘m’開頭print(str1.startswith('m', 3)) #判斷字符串中第三個字符開始的字符串是否以‘m’開頭
輸出:
True
True
4)判斷字符串是否為純大小寫字符、數字
print("1234".isdigit()) # 判斷字符串是否為數字print("abcd".islower()) # 判斷字符串是否為純小寫字符print("ABCD".isupper()) # 判斷字符串是否為純大寫字符print(".#$%Y".isascii()) # 判斷字符串是否為純assic字符print(" ".isspace()) # 判斷字符串是否為純空格字符
輸出:
True
True
True
True
True