1. 程式人生 > >Python生涯之數據類型(字符串)

Python生涯之數據類型(字符串)

inf mce 多重 else named 類型 命令 制表符 轉義

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生涯之數據類型(字符串)