国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python序列:字符串,列表和元組(一)

2019-11-06 07:36:48
字體:
來源:轉載
供稿:網友

Python序列

Python中有一些類型,它們的 成員有序排列,可以通過下標來訪問,這種類型統一被稱為序列,包括列表,字符串,數組。其中字符串和元組屬于不可變類型,即無法通過下標來賦值。如a[0]=’1’,而列表屬于可變類型,可以通過下標來賦值。這篇帖子主要講字符串,列表和元組在后面的帖子再講。

1 序列

序列類型有著相同的訪問模式:它的每一個元素可以通過指定一個偏移量的方式得到。而多個元素可以通過切片操作的方式一次得到。

1.1 標準類型操作符

Python中的標準類型操作符,即算術操作符、比較操作符、邏輯操作符,可以用作序列類型。

1.2 序列類型操作符

Python中對序列都適用的操作符,有:

成員關系操作符: in, not in obj in seq,判斷obj是否在seq中

鏈接操作符: + 把一個序列和另一個相同類型的序列做連接 seq1 + seq2

重復操作符: *

seq * int_num

可以獲得一個序列的拷貝

>>> a['2', '2']>>> a*2['2', '2', '2', '2']

切片操作符: [],[:],[::]

用索引來獲取序列類型的某個元素,或者指定開始或者結束元素,用來獲取一段連續的元素。

1.3 內建函數

內建函數list(), str(),和tuple()被用做在各種序列類型之間轉換。你可以把它們理解成其它語言的類型轉換,但是不是真正的類型轉換,因為會將元素值的索引賦值給新創建的元素,也就是說,list()等函數返回值的元素地址,和list()傳入參數的返回值地址相同,即使是不同類型之間的轉換(淺拷貝)!比如:

>>> a['2', '2']>>> b = str(b)>>> b"['2', '2']">>> id(a[0])139874793120072>>> id(b[2])139874793120072

可以看到a中的元素第一個2和b中元素的第一個2,內存地址相同!

還有一些可操作函數: enumerate(iter) len(seq) max(iter,key=None) min(iter, key=None) reversed(seq) sorted(iter, func=None, key=None, reverse=False) sum(seq, init=0) zip([it0, it1,… itN])

等等,后面會提到。

2 字符串

Python里,用單引號或者雙引號來表示一個字符串,可以用索引來訪問每一個元素,包括切片。 刪除字符串:可以通過給字符賦值空值或者用del關鍵字

>>> a = 'asdf'>>> del a>>> aTraceback (most recent call last): File "<stdin>", line 1, in <module>NameError: name 'a' is not defined>>> a = 'asdfasdf'>>> a = ''>>> a''

看來賦空值還沒法刪除a

在字符串中,沒法用a[0]=’s’這類方法給字符串賦值,因為字符串,元組,數值類型都是不可更新類型,如果想要改變某個字符串的值,就必須通過創建一個新串來實現。比如,可以通過切片技術來獲取一個新串。

3 字符串和操作符

3.1 標準類型操作符

鏈接+,成員操作符(in , not in )很簡單了,不用說了。

普通字符串轉化為 Unicode 字符串: 如果把一個普通字符串和一個 Unicode 字符串做連接處理,Python 會在連接操作前先把普通字符串轉化為 Unicode 字符串:

>>> a = '1'>>> a'1'>>> a = a + u'2'>>> au'12'

4 只適用于字符串的操作符

4.4.1 格式化操作符(%)

>>> "%+d"'%+d'>>> "%+d" % 4'+4'>>> "%+d" % 10'+10'>>> "%+d" % -10/... '-10'>>> "%+d" % -10'-10'>>> re更多的就不寫了,還有很多用法,網上有。

4.4.2 字符串模板

>>> from string import Template>>> s = Template('There are ${howmany} ${lang} Quotation Symbols')>>>>>> print s.substitute(lang='Python', howmany=3) There are 3 Python QuotationSymbols>>>>>> print s.substitute(lang='Python') Traceback (most recent call last):File "<stdin>", line 1, in ?File "/usr/local/lib/python2.4/string.py", line 172, in substitutereturn self.pattern.sub(convert, self.template)File "/usr/local/lib/python2.4/string.py", line 162, in convert val =mapping[named]KeyError: 'howmany'>>>>>> print s.safe_substitute(lang='Python') There are ${howmany} Python QuotationSymbols

4.4.3 原始字符串操作符

有時候,我們不像讓字符串里的轉義字符發生作用,我們可以使用r/R來讓字符串變為原始字符串,這樣就不會解釋轉義字符了。使用小寫r或者大寫R都可以。如下的例子:

>>> a = '/nasdkfjsad/t'>>> print aasdkfjsad >>> a = r'/nasdkfjsad/t'>>> print a/nasdkfjsad/t

4.4.4 unicode字符串操作符

和上面的原始字符操作符用法基本一樣,如下例子:

>>> a = 'asdf'>>> a = u'asdf'>>> au'asdf'

5 內建函數

5.1 標準類型函數

cmp()

>>> str1 = 'abc'>>> str2 = 'lmn'>>> str3 = 'xyz'>>> cmp(str1, str2)-11>>> cmp(str3, str1)23>>> cmp(str2, 'lmn')0

5.2 序列類型函數

這類函數,會舉一些小例子:

len()

>>> au'asdf'>>> len(a)4

max() and min()

>>> au'asdf'>>> len(a)4>>> max(a)u's'>>> min(a)u'a'

顯然,max和min函數是返回字符串中ascii值最大的和最小的元素

enumerate()

>>> a = 'asdf'>>> for i , j in enumerate(a):... print i ,j... 0 a1 s2 d3 f

zip()

>>> zip('123', 'abc')[('1', 'a'), ('2', 'b'), ('3', 'c')]>>> a = zip('123', 'abc')>>> type(a)<type 'list'>>>> a = zip('1234', 'abc')>>> a[('1', 'a'), ('2', 'b'), ('3', 'c')]>>> a = zip('12', 'abc')>>> a[('1', 'a'), ('2', 'b')]>>> a = zip('123', 'ac')>>> a>>>> a = zip('123', 'ac', 'cvb')>>> a[('1', 'a'), ('2', 'c')][('1', 'a', 'c'), ('2', 'c', 'v')]>>> a = zip('123', 'ac', 'cvbfff')>>> a[('1', 'a', 'c'), ('2', 'c', 'v')]

可以看出,zip返回一個list列表,把所有參數的第一個元組組成一個元組存儲到列表里,再把所有參數的第二個元素都存儲在一個元組里,然后再存儲到列表里,依次下去,直到其中有一個參數沒有元素為止。

6 字符串內建函數

string.find(str, beg=0,end=len(string)) 檢測 str 是否包含在 string 中,如果 beg 和 end 指定范圍, 則檢查是否包含在指定范圍內,如果是返回開始的索引值,否則 返回-1

string.index(str, beg=0,end=len(string)) 跟 find()方法一樣,只不過如果 str 不在 string 中會報一個異常.

string.count(str, beg=0,end=len(string)) 返回 str 在 string 里面出現的次數,如果 beg 或者 end 指定則 返回指定范圍內 str 出現的次數

string.join(seq) Merges (concatenates)以 string 作為分隔符,將 seq 中所有的元素 (的字符串表示)合并為一個新的字符串

>>> a = ['a', 'b', 'c']>>> " ".join(a)'a b c'>>> a = ('a', 'b', 'c')>>> " ".join(a)'a b c'>>> " ".join('abc')'a b c'

如上所示:元組,列表,字符串都可以當做參數,但是只能是元素只能是字符串,不能傳入如[1, 2, 3]這種的列表,因為不接受整數。

string.lstrip() 截掉 string 左邊的空格 string.rstrip() 刪除 string 字符串末尾的空格. string.strip([obj])在 string 上執行 lstrip()和 rstrip() string.split(str=”“, num=string.count(str)) 以 str 為分隔符切片 string,如果 num有指定值,則僅分隔 num 個子字符串

別的函數就不列舉了。這幾個對我來說很常用。

Unicode

從Python1.6起就開始引進對于字符串的支持,是用來在多種雙字節字符的格式、編碼進行轉換的,其中包括一些對這類字符串的操作管理功能。

unicode術語:

ASCII:美國標準信息交換碼 Code point:類似于 ASCII 值,代表 Unicode 字符的值,范圍在 range(1114112)或者說0x000000 到 0x10FFFF. UTF:Unicode 或者 UCS 的轉換格式. UTF-8:八位 UTF 轉換格式(無符號字節序列, 長度為一到四個字節) UTF-16:16 位 UTF 轉換格式(無符號字節序列,通常是 16 位長[兩個字節],見 UCS2)

UTF-8是unicode編碼的其中一種,ASCII在UTF-8編碼中,其值和ASCII一樣,所以,UTF-8編碼很受歡迎。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 峨眉山市| 若羌县| 财经| 佛教| 唐海县| 曲麻莱县| 宁海县| 县级市| 玛曲县| 滕州市| 安徽省| 叶城县| 塔河县| 汤阴县| 奎屯市| 永清县| 七台河市| 通州区| 康乐县| 中卫市| 班戈县| 甘洛县| 三台县| 芜湖县| 林州市| 剑河县| 怀仁县| 枝江市| 镇康县| 承德县| 含山县| 光山县| 新安县| 新余市| 湘潭县| 北辰区| 屏山县| 彝良县| 紫云| 乡宁县| 鹿泉市|