Python生涯之數據類型(字符串)
python中斷多重循環的方法exit_flag
常見的方法: exit_flag = flase for 循環: for 循環: if 條件 exit_flag = true break #跳出裏面的循環 if exit_flag: break #跳出外面的循環
基本數據類型和擴展數據類型的分類?
基本數據類型:
可變數據類型:列表,字典,集合
不可變數據類型:字符串,元祖,數字
擴展性數據類型:
1,namedtuole():生成可以使用名字來訪問元素內容的tuple子類
2,deque:雙端隊列,可以快速的從另一側追加和推出對象
3,counter:計數器,主要用來計數
4,orderdict:有序字典
5,defaultdict:帶有默認值的字典
Python3 字符串
字符串是 Python 中最常用的數據類型。我們可以使用引號(‘或")來創建字符串。
創建字符串很簡單,只要為變量分配一個值即可。例如:
var1 = ‘Hello World!‘ var2 = "Runoob"
Python 訪問字符串中的值
Python 不支持單字符類型,單字符在 Python 中也是作為一個字符串使用。
Python 訪問子字符串,可以使用方括號來截取字符串,如下實例:
#!/usr/bin/python3 var1 = ‘Hello World!‘ var2 = "Runoob" print ("var1[0]: ", var1[0]) print ("var2[1:5]: ", var2[1:5])
執行結果
var1[0]: H
var2[1:5]: unoo
Python字符串更新
#!/usr/bin/python3 var1 = ‘Hello World!‘ print ("已更新字符串 : ", var1[:6] + ‘Runoob!‘)
執行結果
已更新字符串 : Hello Runoob!
Python轉義字符
轉義字符 描述 \(在行尾時) 續行符 \\ 反斜杠符號 \‘ 單引號 \" 雙引號 \a 響鈴 \b 退格(Backspace) \e 轉義 \000 空 \n 換行 \v 縱向制表符 \t 橫向制表符 \r 回車 \f 換頁 \oyy 八進制數,yy代表的字符,例如:\o12代表換行 \xyy 十六進制數,yy代表的字符,例如:\x0a代表換行 \other 其它的字符以普通格式輸出
Python字符串運算
實例:
#!/usr/bin/python3 a = "Hello" b = "Python" print("a + b 輸出結果:", a + b) print("a * 2 輸出結果:", a * 2) print("a[1] 輸出結果:", a[1]) print("a[1:4] 輸出結果:", a[1:4]) if( "H" in a) : print("H 在變量 a 中") else : print("H 不在變量 a 中") if( "M" not in a) : print("M 不在變量 a 中") else : print("M 在變量 a 中") print (r‘\n‘) print (R‘\n‘)
輸出結果:
a + b 輸出結果: HelloPython a * 2 輸出結果: HelloHello a[1] 輸出結果: e a[1:4] 輸出結果: ell H 在變量 a 中 M 不在變量 a 中 \n \n
Python 的字符串內建函數
http://www.runoob.com/python3/python3-string.html
元組的特點和功能
特點:
不可變,所以又稱只讀列表
本身不可變,但是如果元祖中還包含了其他可變元素,這些可變元素可以改變
功能:
索引
count
切片
簡單講一下hash
hash,一般翻譯做“散列”,也有直接音譯為“哈希”的,就是把任意長度的輸入,通過散列算法,變化成固定長度的輸出,該輸出就是散列值,這種轉換是一種壓縮映射,也就是,散列值的空間通常遠小於輸入的空間,不同的輸入可能散列成相同的輸出,所以不可能從散列值來唯一的確定輸入值,簡單的說就是有一種將任意長度的消息壓縮到某一固定長度的函數。
特性:hash值的計算過程是依據這個值的一些特性計算的,這就要求被hash的值必須固定,因此被hash的值是不可變的。
為什麽使用16進制
1,計算機硬件是0101二進制,16進制剛好是2的倍數,更容易表達一個命令或者數據,十六進制更簡短,因為換算的時候一位16進制數可以頂4位二進制數,也就是一個字節(8位進制可以用兩個16進制表示)
2,最早規定ASCII字符采取的就是8bit(後期擴展了,但是基礎單位還是8bit),8bit用兩個16進制直接就能表達出來,不管閱讀還是存儲逗逼其他進制更方便。
3,計算機中CPU計算也是遵循ASCII字符串,以16,32,64這樣的方法在發展,因此數據交換的時候16進制也顯得更好
4,為了統一規範,CPU,內存,硬盤我們看到的都是采取的16進制計算
字符編碼轉換總結
python2.x
內存中字符默認編碼是ASCII,默認文件編碼也是ASCII
當聲明了文件頭的編碼後,字符串的編碼就按照文件編碼來,總之,文件編碼是什麽,那麽python2.x的str就是什麽
python2.x的unicode是一個單獨的類型,按u"編碼"來表示
python2.x str==bytes,bytes直接是按照字符編碼存成2進制格式在內存裏
python3.x
字符串都是unicode
文件編碼都默認是utf-8,讀到內存會被python解釋器自動轉成unicode
bytes和str做了明確的區分
所有的unicode字符編碼後都會編程bytes格式
請用代碼實現,查找列表中元素,移除每個元素的空格,並查找以a或者A開頭並且以c結尾的所有元素
li =[‘alex‘,‘eric‘,‘rain‘] tu =(‘alex‘,‘aric‘,‘Tony‘,‘rain‘) dic = {‘k1‘:‘alex‘,‘aroc‘:‘dada‘,‘k4‘:‘dadadad‘} for i in li: i_new = i.strip().capitalize() if i_new.startswith(‘A‘) and i_new.endswith(‘c‘): print(i_new) for i in tu: i_new0 = i.strip().capitalize() if i_new0.startswith(‘A‘) and i_new.endswith(‘c‘): print(i_new0) for i in dic: i_new1 = i.strip().capitalize() if i_new1.startswith(‘A‘) and i_new.endswith(‘c‘): print(i_new1)
利用for循環和range輸出9*9乘法表
for i in range(1,10): for j in range(1,i+1): print(str(i)+"*"+str(j) +"="+str(i*j),end=‘ ‘) print( )
Python生涯之數據類型(字符串)