一、字符串
1.1 怎么定義字符串
字符串是Python最常用的數據結構之一。在 Python 里是用于處理文本數據的,比如存儲姓名、文章內容等文本信息 。
- 定義方式:
- 單引號:用單引號?
' '
?包裹文本,如?name = 'Alice'
?,單引號內可正常包含除單引號之外的字符,若要包含單引號,需進行轉義,像?sentence = 'He said, \'Hello!\''
?。 - 雙引號:用雙引號?
" "
?包裹文本,例如?message = "Hello, world!"
?,在需要包含單引號時較為方便,如?quote = "He said, 'Hello!'"
?。 - 三重單引號:分為三重單引號?
''' '''
?和三重雙引號?""" """
?。常用于定義多行字符串。
- 單引號:用單引號?
使用的時候兩種方式:
- 一種雙引號里有雙引號,那么里面的雙引號就用\進行轉譯。
- 另一種直接最外面使用單引號,里面也可以直接使用雙引號。見下圖。
?
1.2 如何使用字符串中的變量
- 使用場景:當我們需要在字符串中插入變量的值時,可采用 f - strings 這種方式。比如有變量存儲姓名、年齡等信息,想把這些信息整合到一個描述性字符串中,就會用到。
- 語法格式:f - strings 以?
f
?開頭,后面跟著用大括號?{}
?包裹的變量名,即?f"{變量名}"
?。示例如下: -
name = "Alice" age = 25 message = f"My name is {name} and I'm {age} years old." print(message) # 輸出:My name is Alice and I'm 25 years old.
1.3 字符串的基本操作
in
?:表達式?x in s
?,其中?x
?是要查找的元素,s
?是目標字符串。如果?x
?是?s
?的子字符串或字符,返回?True
?,否則返回?False
?。例如:
s = "hello world"
print('ll' in s) # 輸出 True
print('abc' in s) # 輸出 False
not in
?:表達式?x not in s
?,功能與?in
?相反,當?x
?不是?s
?的子字符串或字符時,返回?True
?,否則返回?False
?。例如:
s = "hello world"
print('abc' not in s) # 輸出 True
print('ll' not in s) # 輸出 False
+
?運算符:用于連接兩個字符串。將?s
?和?t
?兩個字符串首尾相連,生成一個新的字符串。例如:
s = "Hello"
t = "World"
result = s + t
print(result) # 輸出 HelloWorld
*
?運算符:用于字符串重復。s * t
?表示將字符串?s
?重復?t
?次,t
?必須是整數。例如:
s = "Hi"
t = 3
result = s * t
print(result) # 輸出 HiHiHi
?
s[i]
:用于獲取字符串?s
?中索引為?i
?的單個字符。在 Python 中,字符串索引從?0
?開始。例如:
s = "hello"
print(s[1:3]) # 輸出 'el'
# 如果索引為負數,則從字符串末尾開始計數,-1 表示最后一個字符 ,如 print(s[-1]) 會輸出 'o' 。
s[i:j]
:獲取字符串?s
?的子串,范圍是從索引?i
?(包含)到索引?j
?(不包含)。例如:
s = "hello"
print(s[1:3]) # 輸出 'el'
# 如果 i 省略,默認從字符串開頭(索引 0 )開始;如果 j 省略,默認到字符串末尾 。比如 s[:3] 等價于 s[0:3] ,s[1:] 等價于 s[1:len(s)] 。
s[i:j:k]
:在?s[i:j]
?的基礎上,增加了步長?k
?,表示每隔?k - 1
?個字符取一個字符。例如:
s = "hello"
print(s[::2]) # 輸出 'hlo' ,從開頭到結尾,每隔1個字符取一個
# k 為負數時,表示反向切片。比如 s[::-1] 可以將字符串 s 反轉 ,對于 s = "hello" ,s[::-1] 輸出為 'olleh' 。
1.4 字符串的常用方法
4.1?str.count(sub[, start[, end]])
- 功能:統計子字符串?
sub
?在指定字符串?str
?中,位于?start
(起始索引,包含)到?end
(結束索引,不包含)范圍內非重疊出現的次數 。start
?和?end
?為可選參數,若省略,默認在整個字符串中統計。 - 示例:
s = "hello world hello"
print(s.count('hello')) # 輸出 2
print(s.count('l', 0, 5)) # 在索引0到4范圍內統計'l'出現次數,輸出 2
4.2?str.isalnum()
- 功能:判斷字符串?
str
?中的所有字符是否都是字母或數字,且字符串至少有一個字符。滿足條件返回?True
?,否則返回?False
?。 - 示例:
s1 = "abc123"
s2 = "abc!123"
s3 = ""
print(s1.isalnum()) # 輸出 True
print(s2.isalnum()) # 輸出 False ,因包含'!'非字母數字字符
print(s3.isalnum()) # 輸出 False ,字符串為空
4.3?str.isalpha()
- 功能:判斷字符串?
str
?中的所有字符是否都是字母,且字符串至少有一個字符。滿足條件返回?True
?,否則返回?False
?。 - 示例:
s1 = "abc"
s2 = "abc123"
s3 = ""
print(s1.isalpha()) # 輸出 True
print(s2.isalpha()) # 輸出 False ,因包含數字
print(s3.isalpha()) # 輸出 False ,字符串為空
4.4?str.join(iterable)
- 功能:以?
str
?作為分隔符,將可迭代對象?iterable
(如列表、元組等,其中元素需為字符串)中的字符串拼接起來,返回拼接后的新字符串。 - 示例:
s = "-"
lst = ["apple", "banana", "cherry"]
result = s.join(lst)
print(result) # 輸出 apple-banana-cherry
4.5?str.split(sep=None, maxsplit=-1)
- 功能:根據分隔符?
sep
?對字符串?str
?進行分割。若?sep
?為?None
,則按空白字符(空格、換行符等)分割;maxsplit
?限制最多分割次數,-1
?表示無限制。返回分割后的字符串列表。 - 示例:
s = "hello world python"
print(s.split()) # 輸出 ['hello', 'world', 'python']
print(s.split('l', 1)) # 按'l'分割,最多分割1次,輸出 ['he', 'lo world python']
4.6 str.startswith(prefix[, start[, end]])
- 功能:檢查字符串?
str
?從索引?start
(包含)到索引?end
(不包含)的部分是否以指定的?prefix
?開頭,滿足則返回?True
,否則返回?False
。start
?和?end
?為可選參數,省略時檢查整個字符串。 - 示例:
s = "hello world"
print(s.startswith('he')) # 輸出 True
print(s.startswith('wo', 6)) # 從索引6開始檢查是否以'wo'開頭,輸出 True
二、數字類型
2.1 數字類型介紹
用途:Python 的數字類型在數學計算(如加減乘除、冪運算等)和統計(如求均值、方差等)場景中廣泛應用 。
種類:
-
- 整數:表示沒有小數部分的數,像?
1
、-5
?等。Python 中的整數沒有大小限制,可表示非常大或非常小的整數。 - 浮點數:用于表示帶有小數部分的數,如?
3.14
、-2.5
?。在計算機中,浮點數采用二進制表示,可能存在精度問題,例如?0.1 + 0.2
?并不精確等于?0.3
?。 - 復數:形式為?
a + bj
?,其中?a
?是實部,b
?是虛部 ,j
?表示虛數單位(在 Python 中用?j
?表示),例如?3 + 4j
?。復數常用于科學計算、信號處理等領域。
- 整數:表示沒有小數部分的數,像?
創建方式:可以通過直接寫數字字面值(如?5
、3.14
?)創建數字,也能通過內置函數(如?int()
、float()
?等)和運算符(如?+
、*
?等)的運算結果來創建 。比如?a = int('5')
?,b = 2 + 3
?。
2.2 數字類型函數介紹
關于 Python 中數字類型常見運算如下:
算術運算:
- 加法(
x + y
):計算?x
?和?y
?兩個數字的總和。例如?3 + 5
?結果為?8
?,可以用于整數、浮點數運算,也支持不同數字類型混合運算,如?3 + 2.5
?結果為?5.5
?。 - 減法(
x - y
):求?x
?與?y
?的差值。比如?7 - 4
?結果是?3
?。 - 乘法(
x * y
):計算?x
?和?y
?的乘積。像?4 * 6
?等于?24
?。 - 除法(
x / y
):返回?x
?除以?y
?的商,結果是浮點數。例如?9 / 2
?結果為?4.5
?。 - 整除(
x // y
):得到?x
?除以?y
?的商的整數部分,舍去小數部分。如?9 // 2
?結果是?4
?。 - 取余(
x % y
):求出?x
?除以?y
?的余數。例如?9 % 2
?結果為?1
?。
符號運算:
- 取反(
-x
):改變數字?x
?的符號,正數變為負數,負數變為正數 。比如?x = 5
?,-x
?就是?-5
?;x = -3
?,-x
?則是?3
?。 - 保持不變(
+x
):對數字?x
?不做任何改變,x
?是多少,+x
?就是多少 。例如?x = 7
?,+x
?依然是?7
?。
數值處理運算:
abs(x)
:返回數字?x
?的絕對值,若?x
?是整數或浮點數,就是其到原點的距離;若?x
?是復數,則返回復數的模。例如?abs(-5)
?結果為?5
?,abs(3 + 4j)
?結果為?5.0
?。int(x)
:將?x
?轉換為整數。若?x
?是浮點數,會向下取整,如?int(3.8)
?結果是?3
?;若?x
?是字符串,只要字符串內容是合法整數形式(如?'5'
?),就能轉換為對應整數。float(x)
:把?x
?轉換為浮點數。若?x
?是整數,會在末尾添加?.0
?,如?float(5)
?結果是?5.0
?;若?x
?是字符串,只要字符串內容是合法數字形式(如?'3.14'
?),就能轉換為浮點數。complex(re, im)
:創建一個復數,實部為?re
?,虛部為?im
?,im
?默認為?0
?。比如?complex(3)
?得到?3+0j
?,complex(3, 4)
?得到?3 + 4j
?。c.conjugate()
:對于復數?c
?,返回其共軛復數,即實部不變,虛部取反。例如復數?c = 3 + 4j
?,c.conjugate()
?結果是?3 - 4j
?。
2.3 數字類型轉換
Python 是?強類型編程語言,意味著變量的類型一旦確定,就不會自動進行類型轉換(除非是顯式操作),不同類型的數據在進行運算時,不會像弱類型語言那樣自動隱式轉換,以保證數據類型的安全性和嚴謹性 。
(1)類型查看
使用?type()
?函數可以獲取對象的類型。例如:
a = 5
print(type(a)) # 輸出 <class 'int'>
b = 3.14
print(type(b)) # 輸出 <class 'float'>
(2)類型轉換
int()
:用于將符合條件的值轉換為整數。可以將浮點數轉換為整數(向下取整,如?int(3.8)
?結果為?3
?);也能將表示整數的字符串(如?'5'
?)轉換為整數 ,但字符串內容必須是合法整數形式,否則會報錯。float()
:可把整數或表示數字的字符串轉換為浮點數。整數轉換時會在末尾添加?.0
?,如?float(5)
?結果是?5.0
?;只要字符串內容是合法數字形式(如?'3.14'
?)就能轉換為浮點數。
2.4 數字與字符串轉換
(1)數字轉字符串
使用?str()
?函數可以將數字轉換為字符串。無論是整數、浮點數還是復數,都能通過該函數轉換。例如:
num_int = 5
num_float = 3.14
num_complex = 2 + 3j
print(str(num_int)) # 輸出 '5'
print(str(num_float)) # 輸出 '3.14'
print(str(num_complex)) # 輸出 '(2+3j)'
(2)字符串轉整數
int()
?函數用于將字符串轉換為整數,但要求字符串的內容必須是合法的整數表示形式,比如?'123'
?。如果字符串中包含非數字字符(除了正負號 ),轉換時就會報錯。示例如下:
s1 = '10'
s2 = 'abc'
print(int(s1)) # 輸出 10
# print(int(s2)) # 會報錯,因為 'abc' 不是合法整數形式
注意:int()只能將只含整數的字符串轉換,否則報錯。
三、補充
Python、Java 都屬于強類型編程語言。在這類語言中,每個變量都有明確且固定的數據類型,一旦定義好就不能隨意改變。
3.1 類型穩定性
數據類型不會因為運算等操作而自動改變。例如在 Python 中,整數?5
?與浮點數?3.14
?相加,5
?不會自動轉換為浮點數再運算,而是系統會根據規則將整數隱式轉換為浮點數后進行運算,但這不是變量類型中途改變,而是遵循語言的運算規則。又如在 Java 中,定義?int a = 5;
?,a
?的類型始終是?int
?,不會因為參與運算就變成其他類型。
3.2 類型轉換方式
若要改變數據類型,必須通過顯式的類型轉換操作。在 Python 中,使用?int()
、float()
、str()
?等函數進行轉換;在 Java 中,使用強制類型轉換(如?(int)3.14
?把?3.14
?強制轉換為整數 )或者自動裝箱拆箱機制(針對基本數據類型和包裝類之間)等方式。 顯式轉換能讓開發者清楚知道類型變化,增強代碼的可讀性和穩定性。