Python基礎 核心資料型別 序列 字串

2021-07-25 19:40:36 字數 4081 閱讀 1360

###序列

容器是包含其他物件的任意物件,序列及對映(字典)是常見的容器,序列中的每個元素都對應乙個位置,而對映中的元素都對應乙個鍵。集合(set)也是容器的一種。

序列是python中的最基本的資料結構。序列中的每個元素被分配乙個序號,或者稱為索引,和c語言中的陣列一樣,下標從0開始。python包含6種內建的序列:列表、元組、字串、unicode字串、xrange物件、buffer物件。最常用的是列表和元組。列表和元組的主要區別在於列表可以被修改,但是元組不行。絕大多數情況下都可以用列表替代元組,唯一的例外是在元組用作字典的鍵的情況下。

通用操作

####索引取值

s[0]

[i],所有的序列都可以通過索引來取指定位置上的值,如序列字面量,返回值為序列的函式等。python語言特有的是索引可以為負數,表示從最後乙個位置開始數起,-1代表最後乙個元素,-2代表倒數第二個元素,以此類推。

####分片

s[1:-1]

[i,j],索引是用來取序列中的乙個元素,而分片是用來取序列中的一定範圍內的元素,取得的子串行包含第乙個邊界索引對應位置上的元素,但是不包含第二個邊界索引對應位置的元素,只取到它前面那個元素。需要注意的是,如果左邊索引對應元素晚於右邊索引對應元素出現,那麼得到的是乙個空序列,如[3, 1], 或[-3, 0]。這樣的話,需要思考怎麼得到最後乙個位置上的元素呢?有兩種方法,乙個是右索引是最後乙個元素下乙個位置對應的索引;或者以預設的方式 [3:]。

分片除了需要指定的開始點和結束點,還有乙個引數:步長。如果不顯示指定步長,預設步長為1,以步長1遍歷起始點和結束點之間的元素。[0:10 : 2],最後乙個引數就是指定的步長。這裡需要注意的是,步長不可以為0,但是可以為負數,表示逆向遍歷。這時左索引應該是大於右索引的。左索引仍是起始位置,所得的分片仍包含左索引對應的元素,不同之處就在於逆向遍歷。

####加法

s1 + s2

>>>x = "hello, "

>>>y = "world!"

>>>x + y

'hello, world!'

####乘法

s * 3

序列可以乘上乙個整數,得到乙個新序列,是原有序列重複整數值次的結果。如果想初始化乙個長度為10 的空表,可以通過[none] * 10來實現,none是python的內建值,表示什麼都沒有

####成員

in

檢查乙個值是否在序列中,可以用in運算子(bool運算子)。如 『we』 in 『weight』 就會返回true值。

####內建函式

len()

max()

min()

字串

python中的字串具有不可變性,也就是說沒有任何操作可以對字串物件本身進行修改,修改操作返回的都是新的物件。

####方法

>>>'%s, eggs, %s' % ('spam', 'spam')

'spam, eggs, spam'

>>>'{}, eggs, {}'.format('spam', 'spam')

'spam, eggs, spam'

>>>"hell, " "world"

"hello, world"

####dir and help

如果想要檢視物件的所有屬性(方法也是屬性),可以使用內建函式dir()

>>>dir(s)
如果要查詢方法的詳細情況可以使用help函式:

>>>help(s.replace)
####模式匹配

為了在python中進行模式匹配,需要匯入re模組。

>>>import re

>>>match = re.match('hello[ \t](.*)world', 'hello python world')#與()中匹配的部分儲存為組

>>>match.group(1)

'python'

####寫字串的其他方法

轉義字元\』

\n\t

長字串

在需要書寫長達多行的字串時,可以使用三個引號替代普通引號,這樣在每行的末尾會增加乙個換行符:

'''string aaabaaaaaaaaaa

bbbbbbbbbbbbb

ccccccccccc

'''

也可以通過在一行的最後加上轉義字元\,這樣也可以實現長字串或語句的書寫。

原始字串

在普通的字串中的\一般代表著轉義字元,如果就是希望得到本來的形式,如\n,那麼需要對\轉義,\n,但是這樣書寫並不美觀,可以用原始字串達到這一目的。原始字串的格式是在普通字串前面加上r:r'string',需要注意的是原始字串的結尾不能是\,如r'string\',因為如果最後乙個字元是\,python就不知道是否應該結束該字串。

那如果非得在字串的最後加上\,怎麼辦呢?這用到了字串的第二種拼接方式,可以將\這部分分離出來,r'string' '\\'

unicode字串

python中普通的字串以8位ascii碼進行儲存,二unicode字串以16位unicode字元儲存,顯然能表示的字元增加了。unicode字串在前面加上u,如u『string』。

其他

:####字串的列印

注意,python在列印字串的時候會保留引號,這是因為python列印值的時候會保持該值在python**中的狀態,而如果用print語句就不一樣了,是沒有引號的。

####值被轉換成字串的兩種機制:

str():型別轉換

repr():同str()一樣將乙個物件轉換成字串形式,建立字串,以合法的python表示式表示值,repr的功能也可以用x(反引號)來替代。

預設的互動模式回顯和print的區別類似於repr和str函式的區別:前者產生的結果看起來像是**,而後者通常對使用者更加友好

>>>num = 1.0 / 3

>>>repr(num)

'0.3333333333333333'

>>>str(num)

'0.333333333333'

####使用者輸入

input():引數作為提示內容列印到視窗,返回的是使用者輸入的內容,

raw_input():這個函式也是為了和使用者進行互動的,但是為什麼有了input()還要這個函式呢?因為input假設使用者的輸入都是合法的python表示式,也就是說如果是字串,應該是"string"的形式,這對使用者來說很不方便,這時就要用到raw_input了,它把使用者的輸入當做原始資料,然後放入字串中。

除非一定要用input函式,否則盡可能的使用raw_input()。

>>>x = input('please enter:')

please enter:4

>>>type(x)

int>>>x = raw_input('please enter:')

please enter:4

>>>type(x)

str

Python基礎 核心資料型別 數字

分類 整型 分為一般整型和長整型,一般整數為4位元組。對於比較大的數,用長整型,數字後面加l,如1000000000l,即使不顯式加l,python也可以通過檢測整數是否超過一般整型所能表示的最大整數進行自動轉換。還可以使用十六進製制 八進位制 二進位制表示整數 十六進製制 0xaf 0xaf 八進...

python核心資料型別

序列運算子 本文採用版本pyton3.5 數字 int,long,float,complex,bool 字元 str,unicode 列表 list 字典 dict 元組 tuple 檔案 file 其他型別 集合 set frozenset,類型別,none str repr 或format 將非...

Python核心資料型別 字串

python的字串是乙個有序的字元集合,有序指的是可以通過偏移來訪問每個字元,每個字元有嚴格的從左到右的位置順序,類似於陣列。python中沒有單個字元的型別 c語言中的char 取而代之的是使用乙個字元的字串。字串是不可變序列,不可以在原處修改,也就是無法執行類似str 0 x 的操作,而執行合併...