2 5 python型別一 字串型別

2021-09-27 03:47:06 字數 3294 閱讀 3155

字串是程式中最常用的一種資料型別,字串可以包含中文與英文等任何字元,在記憶體中用 unicode 編碼儲存,但是儲存到磁碟中時候往往採用 gbk 或者 utf-8 等別的編碼形式。

1、字串型別

字元陣列可以用來儲存字串,字串在記憶體中的存放形式也就是字元陣列的形式,字串可以看成是字元的陣列,例如:

s=「hello」

其記憶體分布如圖:

1> 獲取字串長度函式 len

字串s 的長度為len (s),例如

len("abc")  #3

len("我們abc ") #5

len("") # 空字串s 是連續兩個引號,中間沒有任何東西,空串的長度為 0

len(" ") # 空格字串,長度是1

2> 讀取字串各個字元

要得到字串中第i 個字元,可以像陣列訪問陣列元素那樣用 s[i] 得到,其中 s[0]是第 1個字元, s[1] 是第 2 個字元,……, s[len(s)-1] 是最後乙個字元。例如:

s="abcde"

n=len(s)

for i in range(n):

print(s[i])

注意字串中的字元是不可以改變的,因此不能對某個字元s[i]賦值,例如 s[0]=「h」

是錯誤的。

3> 字元在記憶體中的編碼

計算機只認識二進位制,字元在計算機中實際上是用二進位制數儲存的,這個編碼稱為

unicde編碼,每個英文本元用兩個位元組儲存。要知道某個字元的編碼,用函式 ord 字元便知道了,例如:

s="hi 我是大富"

n=len(s)

# print(n)

for i in range(n):

print(s[i],ord(s[i]))

執行結果如下:

h 104

i 105

32我 25105

是 26159

大 22823

富 23500

下面用程式測試a-z a-z 0-9的unicode編碼:

# 用程式測試 a-z a-z 0-9 的 unicode編碼

s='abcdefghijklmnopqrstuvmxyz'

s='abcdefghijklmnopqrstuvwxyz'

sn='0123456789'

n=len(s)

for i in range(n):

print(s[i],ord(s[i]))

n=len(s)

for i in range(n):

print(s[i],ord(s[i]))

n=len(sn)

for i in range(n):

print(sn[i],ord(sn[i]))

執行結果如下:

a 65

b 66

c 67

d 68

e 69

f 70

g 71

h 72

i 73

j 74

k 75

l 76

m 77

n 78

o 79

p 80

q 81

r 82

s 83

t 84

u 85

v 86

m 77

x 88

y 89

z 90

a 97

b 98

c 99

d 100

e 101

f 102

g 103

h 104

i 105

j 106

k 107

l 108

m 109

n 110

o 111

p 112

q 113

r 114

s 115

t 116

u 117

v 118

w 119

x 120

y 121

z 122

0 48

1 49

2 50

3 51

4 52

5 53

6 54

7 55

8 56

9 57

漢字的編碼也用兩個位元組才能表示,unicode 碼包含所有的符號。它表示英文本元時有乙個位元組是 0 ,這樣表示雖然浪費乙個位元組,但是它把所有的符號都統一成一樣的長度。

4> 編碼轉為字元

乙個符號的編碼為n ,用 chr(n) 函式把它轉為乙個符號,例如:

print(chr(97))

print(chr(65))

print(chr(25105))

結果如下:

a

a我

5> 字串大小比較

兩個字串a b 可以比較大小,比較規則是按各個對應字元的 unicode 編碼,編碼大的乙個為大:

比較a[0]與 b[0],如果 a[0]> b[0]則 a> b ,如果 a[0] b[1] 則 a >b ,如果 a[1] len(b) 則 a> b ,如果 len(a)< len(b)則 a< b 。

如果自己寫乙個比較函式compare(a,b) 比較 a b 大小,如果 a >b 返回 1 ,如果 a

def compare(a,b):

m=len(a)

n=len(b)

k=m # 獲取較小的長度,拿k的長度比較

if m>n:

k=n# 注意比較沒有等號

for i in range(k):

if a[i]>b[i]:

return 1

elif a[i]n:

return 1

else:

return -1

print(compare("0101a","0101b") )

在實際應用中我們可以簡單使用》 、>= 、< 、<= 、==等符號來判斷兩個字串的大小。根據字元的編碼有下列關係:

0<1

特別注意大寫的字母比小寫的小!

字串(一) 字串Hash

今天開一手最不 tao 擅 yan 長的字串演算法 字串hash演算法。似乎提到字串的話,kmp應該是更為常見的一種,但是hash有它的優點,被犇們稱為 優雅的暴力 何謂hash?hash的中文稱為雜湊,這當然是音譯,直譯過來就是雜湊,或者也有叫預對映的。雜湊的作用就是通過某個特殊函式的對映,將任意...

Python 一 字串常用操作

python的字串不可改變 可以像對陣列操作一樣訪問字串的部分內容 s 123 獲取全部內容s 123 獲取從某一下標到結尾的全部內容s 1 23 獲取從開頭到某一下標之前的全部內容s 2 12 獲取乙個左閉右開區間的內容s 1 2 2 再來乙個冒號表示步長s 0 3 2 13 負數代表倒數第n個元...

python學習筆記(一) 字串

字串是python中最常用的資料型別。我們可以使用引號 或 來建立字串。建立字串很簡單,只要為變數分配乙個值即可。例如 var1 hello var2 world python不支援單字元型別,單字元在python中也作為乙個字串使用。python訪問子字串,可以使用方括號來擷取字串,例如 通過索引...