2、Python資料型別(上)
阿新 • • 發佈:2022-03-22
目錄
1、資料型別的基本分類
- Python3 中有六個標準的資料型別:
資料型別 | 是否可變 | 包含子型別 |
---|---|---|
Number(數字) | 不可變 | 包含了int、bool、float、complex |
String(字串) | 不可變 | |
List(列表) | 可變 | |
Tuple(元組) | 不可變 | |
Set(集合) | 可變 | |
Dictionary(字典) | 可變 |
2、Number(數字)
2.1、數字的四種類型
- Python3中數字有四種類型:整數、布林型、浮點數和複數。
型別 | 示例 | 說明 |
---|---|---|
int (整數) | 1,2,255 | int(x) 將x轉換為一個整數 |
bool (布林) | False,True | |
float (浮點數) | 1.23,3E-2 | float(x) 將x轉換到一個浮點數 |
complex (複數) | 1 + 2j |
a = 3.6
b = 3
print(int(a))
print(float(b))
# 3
# 3.0
2.2、數字的運算
d = 17
e = 5
f = 3
print("d+e=", d+e)
print("d-e=", d-e)
print("e*f=", e*f)
print("d/e=", d/e) # / 結果是浮點數
print("d//e=", d//e) # //取整
print("d%e=", d % e) # %取餘
print("e**f=", e**f) # **冪運算
# d+e= 22
# d-e= 12
# e*f= 15
# d/e= 3.4
# d//e= 3
# d%e= 2
# e**f= 125
3、String(字串)
var1 = 'Hello World!' var2 = "Runoob" print(var1) print(var2) # Hello World! # Runoob
3.1、索引與切片(左閉右開)
str1 = "ABCDEF"
print(str1) # 輸出字串
print(str1[0]) # 輸出字串第一個字元
print(str1[0:-1]) # 索引 0(含索引 0,從前往後的索引)到索引 -1(不含索引 -1,從後往前的索引)
print(str1[:-1]) # 同上
# ABCDEF
# A
# ABCDE
# ABCDE
print(str1[2:5]) # 輸出從第三個開始到第五個的字元
print(str1[2:]) # 輸出從第三個開始的後的所有字元
print(str1 * 2) # 輸出字串兩次
print(str1 + 'GH') # 連線字串
# CDE
# CDEF
# ABCDEFABCDEF
# ABCDEFGH
3.2、字串更新
var3 = 'ABCDEFG'
print("已更新字串 : ", var3[:3] + 'abc')
# 已更新字串 : ABCabc
3.3、轉義符
轉義字元 | 描述 |
---|---|
\ (在行尾時) |
續行符 |
\\ |
反斜槓符號 |
\' |
單引號 |
\" |
雙引號 |
\a |
響鈴 |
\b |
退格(Backspace) |
\000 |
空 |
\n |
換行 |
\v |
縱向製表符 |
\t |
橫向製表符 |
\r |
回車 |
\f |
換頁 |
\oyy |
八進位制數,yy代表的字元,例如:\o12代表換行 |
\xyy |
十六進位制數,yy代表的字元,例如:\x0a代表換行 |
\other |
其它的字元以普通格式輸出 |
print('hello\nrunoob') # 換行
print(r'hello\nrunoob') # 在字串前面新增一個 r,表示原始字串,不會發生轉義
# hello
# runoob
# hello\nrunoob
3.4、字串運算子
a = "Hello"
b = "Python"
print("a + b 輸出結果:", a + b)
print("a * 2 輸出結果:", a * 2)
# a + b 輸出結果: HelloPython
# a * 2 輸出結果: HelloHello
if("H" in a):
print("H 在變數 a 中")
else:
print("H 不在變數 a 中")
# H 在變數 a 中
3.5、字串格式化
字串格式化:如 你xx月的話費是xx,餘額是xx
之類的字串,而 xx
的內容是變化的。
佔位符的格式化方法
佔位符 | 替換內容 |
---|---|
%d | 整數 |
%f | 浮點數 |
%s | 字串 |
%x | 十六進位制整數 |
txt = 'world'
'Hello, %s' % txt
# 'Hello, world'
'Hi, %s, you have $%d' % ('Michael', 1000000)
# 'Hi, Michael, you have $1000000'
'%4d-%03d' % (3, 1) # %4d表示:最少4位數,本例子中數值是3,故補充3個空位
# %03d表示:最少三位數,如果不夠三位數,則在前面補充0
# ' 3-001'
'%.2f' % 3.1415926 # %.2f表示:保留兩位小數點
# '3.14'
# 有些時候,字串裡面的 % 是一個普通字元怎麼辦?這個時候就需要轉義,用 %% 來表示一個 %
'growth rate: %d %%' % 7
# 'growth rate: 7 %'
format()的格式化方法
另一種格式化字串的方法是format()
方法,它會用傳入的引數依次替換字串內的佔位符{0}
、{1}
……,不過這種方式寫起來比%要麻煩得多:
'Hello, {0}, 成績提升了 {1:.1f}%'.format('小明', 17.125)
# 'Hello, 小明, 成績提升了 17.1%'
練習:
小明的成績從去年的72分提升到了今年的85分,請計算小明成績提升的百分點,並用字串格式化顯示出'xx.x%',只保留小數點後1位
s1 = 72
s2 = 85
r = (s2-s1)/s1*100
print("小明成績提升的百分點為:%.1f%%" % r)
# 小明成績提升的百分點為:18.1%
3.6、字串內建函式
序號 | 方法 | 描述 |
---|---|---|
1 | capitalize() |
將字串的第一個字元轉換為大寫 |
2 | center(width, fillchar) |
返回一個指定的寬度 width 居中的字串,fillchar 為填充的字元,預設為空格。 |
3 | count(str, beg= 0,end=len(string)) |
返回 str 在 string 裡面出現的次數,如果 beg 或者 end 指定則返回指定範圍內 str 出現的次數 |
4 | bytes.decode(encoding="utf-8", errors="strict") |
Python3 中沒有 decode 方法,但我們可以使用 bytes 物件的 decode() 方法來解碼給定的 bytes 物件,這個 bytes 物件可以由 str.encode() 來編碼返回。 |
5 | encode(encoding='UTF-8',errors='strict') |
以 encoding 指定的編碼格式編碼字串,如果出錯預設報一個ValueError 的異常,除非 errors 指定的是'ignore'或者'replace' |
6 | endswith(suffix, beg=0, end=len(string)) |
檢查字串是否以 obj 結束,如果beg 或者 end 指定則檢查指定的範圍內是否以 obj 結束,如果是,返回 True,否則返回 False. |
7 | expandtabs(tabsize=8) |
把字串 string 中的 tab 符號轉為空格,tab 符號預設的空格數是 8 。 |
8 | find(str, beg=0, end=len(string)) |
檢測 str 是否包含在字串中,如果指定範圍 beg 和 end ,則檢查是否包含在指定範圍內,如果包含返回開始的索引值,否則返回-1 |
9 | index(str, beg=0, end=len(string)) |
跟find()方法一樣,只不過如果str不在字串中會報一個異常. |
10 | isalnum() |
如果字串至少有一個字元並且所有字元都是字母或數字則返 回 True,否則返回 False |
11 | isalpha() |
如果字串至少有一個字元並且所有字元都是字母則返回 True, 否則返回 False |
12 | isdigit() |
如果字串只包含數字則返回 True 否則返回 False.. |
13 | islower() |
如果字串中包含至少一個區分大小寫的字元,並且所有這些(區分大小寫的)字元都是小寫,則返回 True,否則返回 False |
14 | isnumeric() |
如果字串中只包含數字字元,則返回 True,否則返回 False |
15 | isspace() |
如果字串中只包含空白,則返回 True,否則返回 False. |
16 | istitle() |
如果字串是標題化的(見 title())則返回 True,否則返回 False |
17 | isupper() |
如果字串中包含至少一個區分大小寫的字元,並且所有這些(區分大小寫的)字元都是大寫,則返回 True,否則返回 False |
18 | join(seq) |
以指定字串作為分隔符,將 seq 中所有的元素(的字串表示)合併為一個新的字串 |
19 | len(string) |
返回字串長度 |
20 | ljust(width[, fillchar]) |
返回一個原字串左對齊,並使用 fillchar 填充至長度 width 的新字串,fillchar 預設為空格。 |
21 | lower() |
轉換字串中所有大寫字元為小寫. |
22 | lstrip() |
截掉字串左邊的空格或指定字元。 |
23 | maketrans() |
建立字元對映的轉換表,對於接受兩個引數的最簡單的呼叫方式,第一個引數是字串,表示需要轉換的字元,第二個引數也是字串表示轉換的目標。 |
24 | max(str) |
返回字串 str 中最大的字母。 |
25 | min(str) |
返回字串 str 中最小的字母。 |
26 | replace(old, new [, max]) |
把將字串中的 str1 替換成 str2,如果 max 指定,則替換不超過 max 次。 |
27 | rfind(str, beg=0,end=len(string)) |
類似於 find()函式,不過是從右邊開始查詢. |
28 | rindex( str, beg=0, end=len(string)) |
類似於 index(),不過是從右邊開始. |
29 | rjust(width,[, fillchar]) |
返回一個原字串右對齊,並使用fillchar(預設空格)填充至長度 width 的新字串 |
30 | rstrip() |
刪除字串字串末尾的空格. |
31 | split(str="", num=string.count(str)) |
num=string.count(str)) 以 str 為分隔符擷取字串,如果 num 有指定值,則僅擷取 num+1 個子字串 |
32 | splitlines([keepends]) |
按照行('\r', '\r\n', \n')分隔,返回一個包含各行作為元素的列表,如果引數 keepends 為 False,不包含換行符,如果為 True,則保留換行符。 |
33 | startswith(substr, beg=0,end=len(string)) |
檢查字串是否是以指定子字串 substr 開頭,是則返回 True,否則返回 False。如果beg 和 end 指定值,則在指定範圍內檢查。 |
34 | strip([chars]) |
在字串上執行 lstrip()和 rstrip() |
35 | swapcase() |
將字串中大寫轉換為小寫,小寫轉換為大寫 |
36 | title() |
返回"標題化"的字串,就是說所有單詞都是以大寫開始,其餘字母均為小寫(見 istitle()) |
37 | translate(table, deletechars="") |
根據 str 給出的表(包含 256 個字元)轉換 string 的字元, 要過濾掉的字元放到 deletechars 引數中 |
38 | upper() |
轉換字串中的小寫字母為大寫 |
39 | zfill (width) |
返回長度為 width 的字串,原字串右對齊,前面填充0 |
40 | isdecimal() |
檢查字串是否只包含十進位制字元,如果是返回 true,否則返回 false。 |