目錄
- Python 內置的資料結構
- 一、字串
- 1.1 字串的定義
- 1.2 連接和重復
- 1.3 獲取字串長度
- 1.4 字串索引(index)
- 1.5 字串切片(slice)
- 1.6 字串的不可變性
- 1.7 一些其他的與字串相關的運算子
- 1.8 字串物件的常用方法
- 一、 字串中的大小寫變換
- 二、字串中的測驗函式,這些函式的回傳值都是bool值
- 三、字串中的搜索和替換
- 四、字串的分割和組合
- 一、字串
Python 內置的資料結構
? 到目前為止,我們如果想保存一些資料,只能通過變數,但是如果遇到較多的資料要保存,這個時候時候用變數就變的不太現實,
? 我們需要能夠保存大量資料的類似變數的東東,這種東東就是資料結構(Data Structures),
? 資料結構,它們只是一種結構,能夠將一些資料聚合在一起的結構,換句話說,它們是用來存盤一系列相關資料的集合,
? python 提供了 4 種內置資料結構:List(串列)、Tuple(元組)、Dictionary(字典)、Set(集合)
? 嚴格來說,字串也是一種資料結構,因為他把字符組織在了一起,
? 所以,本章先從字串開始講起,
一、字串
1.1 字串的定義
字串就是一串字符,是編程語言中表示文本的資料型別
在Python中可以使用 一對雙引號或者一對單引號定義一個字串
雖然可以使用
\"或\'做字串的轉移,但是實際開發中
- 如果字串內容需要使用
",可以使用'定義字串- 如果字串內容需要使用
',可以使用"定義字串
str1 = "hello python"
str2 = "你是'王二狗'么"
str3 = '你是"李小花"么'
print(str1)
print(str2)
print(str3)
1.2 連接和重復
在前面的學習中我們已接近了解了什么是字串,字串的連接,輸出等,下面我們開始學習字串更高級的功能,
+ 用來連接兩個字串
* 用來重復字串
上面兩個運算子可以都可以操作變數,
a = "你好"
b = a + "world"
c = b * 3
print(b)
print(c)
如果兩個或多個字串字面量寫在一起,則他們會自動的連接在一起,
d = "a" "b""c" "你好"
print(d) # abc你好
注意:
- 只都是字串字面量才可以通過這種方法連接,變數不能參與
- 字串之間不要添加任何標點符號
- 如果想要打破比較長的字串,這種方式尤其有用,
text = ("窗前明月光"
"疑是地上霜"
"舉頭望明月"
"低頭思故鄉")
print(text)

1.3 獲取字串長度
? 字串的長度,就是指的字串中字符的個數,使用內置函式 len() 來獲取字串長度, len() 可以獲取任何序列的長度,后面我們會了解更多,
s = "hello world"
print(len(s)) # 11
1.4 字串索引(index)
? 字串中的每個字符都有一個編號,這個編號在編程語言中一般稱之為索引(index、下標),可以通過索引單獨去訪問字串中的每個字符,
? 另外,由于 python 中沒有字符型別,所以即使拿到的是單個字符也是字串型別的,
? index 是從 0 開始,最后一個字符的索引:字串長度 - 1
s = "hello world"
print(s[0])
print(s[3])
print(s[len(s) - 1])

索引也可以是負值,表示從右開始計算,-1 就是最后一個元素的索引, -0 和 0 是一樣的,
s = "hello world"
print(s[-1])
print(s[-2])
print(s[-len(s)])
如果 index 超出了范圍,則會拋出例外,所以使用的時候一定要小心,防止下標越界,
s = "hello world"
print(s[len(s)])

1.5 字串切片(slice)
? 使用 index 只能獲取單個的字符,而字串的切片操作可以獲取子字串,
? python 的切片操作非常的優雅!如果你使用過別的語言,就知道我為什么這么說了,
s = "life is short, use python"
print(s[0:4]) # 獲取下標為 0(包括) 到下標為 4(不包括) 的子字串 "life"
print(s[2:3]) # "f"
print(s[2:]) # fe is short, use python
print(s[:4]) # life
print(s[-2:]) # on
注意:
- 切片的時候,總是開始下標包括,結束下標不包括
- 第一個下標和最后一個下標都可以省略,如果省略第一個下標則默認值是
0,如果省略第二個下標則默認值是字串的長度
雖然在使用下標獲取單個字符的時候,如果超出范圍會拋出例外,
但是在切片的時候,如果越界則不會拋出例外,
s = "life is short, use python"
print(s[9:100]) # hort, use python
print(s[-1:1000]) # n
1.6 字串的不可變性
字串的不可變性是指,字串在記憶體中一旦創建,則字串的內容終身無法更改,如果想獲取不同的字串,只能再重新創建一個字串,
不可變的好處就是,共享而不用擔心同步問題,因為大家都不能修改,
所以,通過下標修改字串中的某個字符是錯誤,會拋出例外,
s = "life is short, use python"
s[0] = "c" # 不能修改,這行代碼會拋出例外

如果需要不同的字串,應該創建一個新的,如下面的代碼:
s = "life is short, use python"
s1 = "P" + s[1:]
print(s1)

1.7 一些其他的與字串相關的運算子
前面學習了 +、*、[]、[:]運算子可以操作字串,還有一些其他的運算子也可以操作字串,
in
測驗字串是否包含這樣的子字串
s = "python"
print("p" in s) # True s 中是否包含字串`p`
print("a" in s) # False
not in
與 in 的含義相反
s = "python"
print("a" not in s) # False
print("P" not in s) # True
%(了解)
格式化字串,格式化字串有比較多的格則,與 c 語言的 printf() 的格式化規則一樣,
常用的就下面 3 種,
name = input("請輸入你姓名:")
age = int(input("請輸入你的年齡:"))
print("你好%s,你今年%s, 你的工資是 %.2f" % (name, age, 30000.4598))

1.8 字串物件的常用方法
前面學習的一些函式都是內置函式,直接呼叫即可,
下面再學習幾個字串物件的方法,(實體方法, 后面面向物件再具體詳細學習)
需要注意:在下面的方法中, 如果是涉及到修改字串的,一定是創建了一個新的字串,并回傳,
使用: 字串.方法(引數) 來呼叫
一、 字串中的大小寫變換
-
s.capitalize()把首字母變換為大寫字母,并回傳字串 -
s.lower()把字串中的所有字母變小寫 -
s.upper()把字串中的所有字母變大寫 -
s.swapcase()大小寫互換 -
s.title()標題化 每個單詞的首字母大寫 -
s.center(w)把字串居中,用空格填充兩邊,
w是填充后的總長度,如果不想用空格填充,可以傳入第二個引數,必須是一個字符,
二、字串中的測驗函式,這些函式的回傳值都是bool值
-
s.isalnum()如果字串的長度大于 0 ,并且所有字符都是字母或數字,則回傳
True -
s.isalpha()如果字串的長度大于 0 ,并且所有字符都是字母,則回傳
True -
s.isdigit()如果字串的長度大于 0 ,并且所有字符都是數字,則回傳
True -
s.islower()所有字母是否全是小寫
-
s.isupper()所有字母是否全是大寫
-
s.istitle()字串中每個單詞首字母是否大寫
-
s.isspace()是否全是空白字符,并至少有一個字符
-
s.startswith(prefix, start, end)切片[start, end]范圍內是否以prefix開頭
-
s.endswith(suffix, start, end)切片[start, end]范圍內是否以suffix結尾
三、字串中的搜索和替換
s.split(sep, maxsplit)使用sep去切割字串,如果不傳入sep則默認使用 空白字符maxsplit為最大分割次數s.rsplit(sep, maxsplit)使用sep從右側開始切割字串,如果不傳入sep則默認使用 空白字符maxsplit為最大分割次數s.splitelines(keepends)按照行分割字串,keepends為bool值,默認為False, 如果為真,保留行分隔符s.join(seq)把seq代表的序列用s連接起來
四、字串的分割和組合
-
s.find(str, beg=0, end=len)方法檢測字串中是否包含子字串
str,如果指定beg(開始) 和end(結束) 范圍,則檢查是否包含在指定范圍內,如果包含子字串回傳開始的索引值,否則回傳 -1, -
s.rfind(str, beg=0, end=len)從右側開始檢測字串中是否包含子字串str,如果指定beg(開始) 和end(結束) 范圍,則檢查是否包含在指定范圍內,如果包含子字串回傳開始的索引值,否則回傳 -1, -
s.index(str, beg=0, end=len)方法檢測字串中是否包含子字串str,如果指定beg(開始) 和end(結束) 范圍,則檢查是否包含在指定范圍內,如果包含子字串回傳開始的索引值,否則回傳錯誤, -
s.rindex(str, beg=0, end=len)從右側開始檢測字串中是否包含子字串str,如果指定beg(開始) 和end(結束) 范圍,則檢查是否包含在指定范圍內,如果包含子字串回傳開始的索引值,否則回傳 錯誤, -
count(substr, start, end)計算substr在切片[start,end]范圍內出現的次數 -
replace(oldstr, newstr, count)把oldstr替換為newstr, count為替換次數 -
s.strip([chars])把字符左右兩端的
chars去掉 ,如果不傳入引數,默認去除空格, 中間的不去掉, -
s.lstrip([chars])s.rstrip([chars])去掉左邊或右邊的指定字符,默認是空格
?
s = "hello"
print(s.capitalize())
print(s.center(30, "z"))
print(s.find("el"))
print("123".isdigit())
print("122".isnumeric())
print(" ab c ".strip())
print("aabbaa".strip("a"))
print(max([100, 30, 40, 90]))
print("10.2.3.5".split("."))
print("hell world".title())

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/162024.html
標籤:Python
上一篇:Python第四章-流程控制
