Python中序列類型方法

Python中序列類型的方法

前言

子曰:“溫故而知新,可以爲師矣。”–<<論語>>
Ubuntu1804 + Python3.6.6


列表的方法

list增加性質?

list具有增加性質的方法有那些呢?

  • append
  • insert
  • extend

list的append方法

>>> a = []
>>> a
[]
>>> a.append(1)
>>> a.append('a')
>>> a.append([1, 2, 3])
>>> a.append(' ')
>>> a
[1, 'a', [1, 2, 3], ' ']

通過實際操作, 我們定義了空列表a[].

並使用append方法, 追加了 4 個元素對象.

append方法, 它接收一個對象, 將該對象追加到列表末尾.

list的insert方法

>>> a
[1, 'a', [1, 2, 3], ' ']
>>> a.insert(1, '這是我插入的值')
>>> a
[1, '這是我插入的值', 'a', [1, 2, 3], ' ']

看這裏, 我們傳入了兩個參數對象.

第一個是索引值即我們想要插入的位置, 第二個是我們想要插入的對象.

insert方法, 它接收索引值和對象, 將對象插入到傳入的索引值的位置.


list的extend方法

>>> a = [1, 2, 3]
>>> a.extend([4, 5, 6])
>>> a
[1, 2, 3, 4, 5, 6]
>>> a.extend(('a', 'b', 'c'))
>>> a
[1, 2, 3, 4, 5, 6, 'a', 'b', 'c']

可以看出, 我們傳入了一個[4, 5, 6]的列表對象, 查看a發現參數中的元素都添加到列表a中.

extend方法, 它接收一個可迭代對象(通常是序列類型), 將該對象中的元素添加到列表末尾.


list刪除性質?

list具有刪除性質的方法有那些呢?

  • remove
  • pop
  • clear

list的remove方法

>>> a
[1, 2, 3, 'a', 's', 'd', 7, 4, 4]
>>> a.remove(1)
>>> a
[2, 3, 'a', 's', 'd', 7, 4, 4]
>>> a.remove('a')
>>> a
[2, 3, 's', 'd', 7, 4, 4]
>>> a.remove(4)
>>> a
[2, 3, 's', 'd', 7, 4]

通過實際操作, 我們給remove傳入一個1後, 發現原列表中的1被刪除了.

同樣我們傳入參數a, 也這樣, 傳入4也是這樣.

4卻有點不同, 因爲原列表有兩個4, 使用remove後發現, 還有個4存在.

爲什麼呢? 因爲remove一次只會刪除一個元素對象.

remove方法, 它接收一個對象, 並在列表中從左至右地查找這個對象, 如果找到, 就刪除找到的第一個元素.

如果沒找到呢? 比如我們傳入一個列表中本不存在的值?

很簡單, 會報一個ValueError: list.remove(x): x not in list的錯誤.


list的pop方法

>>> a
[2, 3, 's', 'd', 7, 4]
>>> a.pop(1)
3
>>> a
[2, 's', 'd', 7, 4]
>>> a.pop(2)
'd'
>>> a.pop()
4
>>> a
[2, 's', 7]
>>> a.pop()
7
>>> a
[2, 's']

通過實際操作, 我們是不是可以看出一些東西啊.

我們傳入參數1, 發現返回了一個3, 並且列表中的元素3也沒有了.

我們不傳參數, 發現返回了一個4, 並且處於列表末尾的4也沒有了.

pop方法, 它在接收參數的情況下, 接收一個索引值參數, 然後**彈出(或刪除)**列表中該索引位置的元素, 並返回給我們彈出(或刪除)的值.

它在不接收參數的情況下, 默認彈出(或刪除)列表中最末尾的元素, 並返回給我們彈出(或刪除)的值.


list的clear方法

>>> a
[2, 's']
>>> a.clear()
>>> a
[]

clear方法很簡單, 通過實際行動和方法名, 我們就能猜到功能了.

clear方法, 它會清除列表中的所有元素.


list修改性質?

索引賦值的方式

>>> a
[1, 2, 'asda', ' ', 55]
>>> a[2] = 'hah'
>>> a
[1, 2, 'hah', ' ', 55]

列表的修改很簡單, 就是使用索引賦值的方式修改.


list查詢性質?

list具有刪除性質的方法有那些呢?

  • count
  • index

list的count方法

>>> a
[1, 2, 4, 6, 6, 3, 4, 4]
>>> a.count(1)
1
>>> a.count(4)
3

count方法, 它接收一個對象, 然後在列表中尋找該對象, 返回該對象在列表中出現的次數.


list的index方法

>>> a
[1, 2, 4, 6, 6, 3, 4, 4]
>>> a.index(6)
3
>>> a.index(2)
1
>>> a.index(4)
2

index方法, 它接受一個對象, 然後在列表中從左至右查找該對象, 如果找到就返回找到的第一個元素的索引.

可以看這裏的例子, 我們傳入4, 那麼index會在列表中找4, 從左至右找到的第一個4就是索引爲2的元素.


list列表複製

>>> a
[1, 2, 3]
>>> b = a.copy()
>>> b
[1, 2, 3]

可以看出, 我們把a的列表copy給了b.

copy方法, 它會複製對象列表, 然後返回複製後的列表.


list中排序

  • sort
  • reverse

list的sort方法

>>> a
[12, 3, 5, 7, 8, 3, 6]
>>> a.sort()
>>> a
[3, 3, 5, 6, 7, 8, 12]
>>> a.append('asda')
>>> a.sort()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: '<' not supported between instances of 'str' and 'int'
>>> a.sort(key=str)
>>> a
[12, 3, 3, 5, 6, 7, 8, 'asda']

sort方法, 它把列表中的每個元素根據ascii碼錶來進行從小到大的排序.

但是這個列表有點特殊, 因爲都是數字.

可以看到我們append一個字符串到列表後, 使用sort就報錯.

那是不是就沒辦法有字符串元素的列表的呢?

還是可以的, 我們傳入參數ket=str.

這樣sort會把列表中的每個元素都當作字符串, 並取字符串第一個元素的ascii碼錶上的值來進行從小到大的排序.


list的reverse方法

>>> a
[2, 1, 5, 2, 1, 88]
>>> a.reverse()
>>> a
[88, 1, 2, 5, 1, 2]

準確來說**reverse方法不是排序**, 應該是改變列表中元素的排列方法.

從例子中我們就能看出, reverse只是改變了列表中元素的排列方式.

reverse方法, 它會將列表中的元素方向存放.

reverse的英文意思是 反向的意思.


元祖的方法

  • count
  • index

元祖的count, index方法使用和列表的相同.


字符串的方法

方法分類

由於字符串的方法有很多, 在這裏就先把有常用的方法歸類.

  • count: 和列表的方法類似, 不再講解.
  • index: 和列表的方法類似, 不再講解.

字符串增加

>>> '123123' + 'asdasda'
'123123asdasda'
>>> 'asd' * 10
'asdasdasdasdasdasdasdasdasdasd'

我們可以通過+*的方式來增加字符串.


字符串方法大全

str的capitalize方法

>>> a
"i'm is good man."
>>> a.capitalize()
"I'm is good man."
>>> a
" i'm is good man."
>>> a.capitalize()
" i'm is good man."

通過使用該方法, 讓我們的字符串首字符的字母發生了改變, 變成了大寫.

但是如果字符串的首字符不是字母的, 那麼返回的字符串和原字符串相同.

方法, 它會把字符串的首字符進行大寫轉換, 如果首字符不是字母則不發生改變, 如果是就將小寫字母轉爲大寫, 第一個字符後面的其他字母進行小寫轉換.


str的casefold方法

>>> a
'ASDAS TRUE FALSE ASD'
>>> a.casefold()
'asdas true false asd'
>>> a
'ß'
>>> a.casefold()
'ss'

casefold方法: 返回一個 將原字符串中的所有大寫字符轉換爲小寫字符 的字符串.

這裏的功能和lower方法相似但是有區別.

lower方法只對ASCII碼中的大寫字母字符有效.

如果需要處理其他的語言的大寫字母就需要使用casefold方法.

我們令a爲德語的大寫字母, 然後再轉小寫.


str的center方法

>>> a
'ß'
>>> a.center(20)
'         ß          '
>>> a.center(10)
'    ß     '
>>> a.center(10, 'p')
'ppppßppppp'

center方法: 它接收一個參數時, 將擴充字符串爲指定寬度, 並將原字符串置於寬度的二分之一處.

它接受兩個參數時, 同樣擴充指定寬度, 並把擴充的地方換成指定字符.

根據實際例子來看會好理解.


str的encode方法

>>> a
'hello world'
>>> a.encode(encoding='utf-8')
b'hello world'

encode方法: 它接收一個編碼參數, 並根據該編碼將數據編碼爲bytes類型的數據.


str的endswith方法

>>> a = 'aasdasdasazdcvadasd'
>>> a.endswith('asd')
True

endswith: 比較字符串結尾部分字符與指定字符是否相等,是返回True,否返回False.


str的startswith方法

>>> a
'aasdasdasazdcvadasd'
>>> a.startswith('aas')
True
>>> a.startswith('asd')
False

startswith: 比較字符串開始部分字符與指定字符是否相等,是返回True,否返回False.


str的find方法

>>> a
'aasdasdasazdcvadasd'
>>> a.find('asdasd')
1

find: 在字符串中查詢指定對象, 從左至右一旦找到就返回對應位置的索引.


str的isdigit方法

>>> a
'aasdasdasazdcvadasd'
>>> a.isdigit()
False
>>> a = '12312312'
>>> a.isdigit()
True

isdigit: 如果對象中全是數字字符就返回True,否就返回False.


str的isalpha方法

>>> a
'12312312'
>>> a.isalpha()
False
>>> a = 'asdaszxcasdqw'
>>> a.isalpha()
True

isalpha: 如果對象中全是字母字符就返回True,否就返回False.


str的islower方法

>>> a = 'asdasd;,;,,m '
>>> a.islower()
True
>>> a = 'asdasd;,;,,M '
>>> a.islower()
False

islower: 檢查字符串中的字母是否全爲小寫,是就返回True,否就返回False.


str的isupper方法

>>> a = 'ADSD,.;  ,;'
>>> a.isupper()
True
>>> a = 'asDHJBJ::'
>>> a.isupper()
False

isupper: 檢查字符串中的字母是否全爲大寫,是就返回True,否就返回False.


str的lower方法

>>> a
'asDHJBJ::'
>>> a.lower()
'asdhjbj::'

lower: 返回一個將字符串中的字母都轉換爲小寫的副本.


str的upper方法

>>> a
'aaJHBHJ,; ;, '
>>> a.upper()
'AAJHBHJ,; ;, '

upper: 返回一個將字符串中的字母都轉換爲大寫的副本.


str的expandtabs方法

>>> a = '\tasdasdas\tasdasd'
>>> a.expandtabs(tabsize=4)
'    asdasdas    asdasd'

expandtabs: 把字符串中的\t轉換爲空格, 默認tabsize=8.

這裏設置tabsize4即把字符串中的\t轉換爲4個空格.


str的isalnum方法

>>> a = 'asdas1651651..'
>>> a.isalnum()
False
>>> a = 'asdasSDS1651651'
>>> a.isalnum()
True

isalnum: 如果字符串中的元素沒有一個不是字母或數字就返回True, 否則False.


str的isdecimal方法

>>> a = 'asdasSDS'
>>> a.isdecimal()
False
>>> a = '1651561651651'
>>> a.isdecimal()
True

isdecimal: 檢查字符串是否只包含十進制字符. 並且只應用於unicode對象.

如果對象字符串不是unicode編碼對象, 需要在字符串前加上u'', 使其爲unicode編碼對象.


str的isidentifier方法

>>> a = ' test1'
>>> b = 'test1'
>>> c = '_Test1'
>>> d = '哈哈'
>>> a.isidentifier()
False
>>> b.isidentifier()
True
>>> c.isidentifier()
True
>>> d.isidentifier()
True

isidentifier: 實際上就是把字符串的內容當作變量名來判斷, 判斷字符串的內容是否符合變量命名規則.


str的isnumeric方法

>>> a = '516516156'
>>> a.isnumeric()
True

isnumeric: 方法檢測字符串是否只由數字組成. 並且該方法是隻針對unicode對象.


str的isprintable方法

>>> a = 'asdaskajsd ;,;ads '
>>> a.isprintable()
True
>>> a = 'asdaskajsd \n;,;ads '
>>> a.isprintable()
False

isprintable: 判斷字符串所包含的字符是否全部可打印. 字符串包含不可打印字符, 如轉義字符, 將返回False.


str的isspace方法

>>> a = '  asda   '
>>> a.isspace()
False
>>> a = '     '
>>> a.isspace()
True
>>> a = ''
>>> a.isspace()
False

isapace: 如果字符串的內容只有空格(whitespace), 就返回True, 否則False.


str的istitle方法

>>> a = 'hello Wro ;.'
>>> a.istitle()
False
>>> a = 'Hello Wro ;.'
>>> a.istitle()
True

istitle: 檢測字符串中所有的單詞拼寫首字母是否爲大寫, 且其他字母爲小寫, 返回bool值.


str的title方法

>>> a = 'Hello world'
>>> a.title()
'Hello World'
>>> a = 'wello world asd asasdasd ;,;,;'
>>> a.title()
'Wello World Asd Asasdasd ;,;,;'

title: 返回把字符串中的單詞首字母大寫的字符串對象.


str的ljust方法

>>> a
'asdkjasbkjd'
>>> a.ljust(20)
'asdkjasbkjd         '
>>> a.ljust(20, 'p')
'asdkjasbkjdppppppppp'

ljust: 方法返回一個原字符串左對齊, 並使用空格填充至指定長度的新字符串.

該方法接收一個參數, 用來指定字符串的長度, 默認使用空格填充.

如果接收兩個參數, 第二個參數指定填充的字符.

rjust和這個很類似, 字符串向右對齊.


str的strip方法

>>> a = 'asdasd   '
>>> a.strip()
'asdasd'
>>> a = '       asdasd   '
>>> a.strip()
'asdasd'

strip: 去除字符串開頭(左)和結尾(右)的空格或傳入的參數字符.

lstriprstrip分別表示去除左邊或右邊的字符.


str的maketrans方法

>>> a = 'abcde'
>>> b = '12345'
>>> c = ''
>>> c.maketrans(a, b)
{97: 49, 98: 50, 99: 51, 100: 52, 101: 53}

maketrans: 生成一個字典, key爲a字符串中的每個元素的ASCII的對應的值, value同理.

兩個參數長度需要相等.


str的parttion方法

>>> a = 'www.baidu.com'
>>> a.partition('.')
('www', '.', 'baidu.com')

parttion: 根據指定的分隔符, 返回分割後的元祖.

從左至右, 只分割一次.

rpartition表示從右至左.


str的replace方法

>>> a
'www.baidu.com'
>>> a.replace('www', 'aaa')
'aaa.baidu.com'

replace: 接收兩個參數, 第一個參數表示需要被替換的元素, 第二參數表示替換的元素.


str的split方法

>>> a = 'www baidu com'
>>> a.split()
['www', 'baidu', 'com']
>>> a.split('i')
['www ba', 'du com']
>>> a.split('w', 2)
['', '', 'w baidu com']

split: 接收或者不接收參數. split用來分割字符串, 返回列表.

不接收參數, 默認以空格來作爲分割的標準, 將分割後的字符串對象存入列表中並返回.

接收一個參數, 該參數表示爲分割的標準即字符, 將分割後的字符串對象存入列表中並返回.

接收兩個參數, 第一個參數表示分割的標準, 第二個參數表示分割幾次, 將分割後的字符串對象存入列表中並返回.

rsplit表示從右至左分割.


str的splitlines方法

>>> a
'hello\r\nworld\n!\n'
>>> a.splitlines(1)
['hello\r\n', 'world\n', '!\n']
>>> a.splitlines(0)
['hello', 'world', '!']
>>> a.splitlines()
['hello', 'world', '!']

splitlines簡直是神器.

splitlines: 用來去除字符串中的\r, \n, \r\n並返回一個列表.

可以接收一個參數, 參數爲真就保留字符串中的換行轉義字符.

如果參數爲假或者不給參數, 那麼就會去除字符串中的換行轉義字符.


str的swapcase方法

>>> a = 'AAaa bbBB ;;;,,,  asdasd'
>>> a.swapcase()
'aaAA BBbb ;;;,,,  ASDASD

swapcase: 將字符串中的字母進行大小寫互轉.


str的translate方法

>>> a = 'abcde'
>>> b = '12345'
>>> c = 'asda12'
>>> d = c.maketrans(a, b)
>>> d
{97: 49, 98: 50, 99: 51, 100: 52, 101: 53}
>>> c.translate(d)
'1s4112'

translate: 根據提供的table也就是翻譯表, 對字符串中的元素進行轉換.

翻譯表, 也就是能顯示出一些對應關係的表.

一般我們使用字符串中方法即maketrans來自定義創建翻譯表.

我們把maketrans返回的對象傳入到translate中即可.

這裏我們將abcde字符對應着12345.

so, the result, you know.


str的zfill方法

>>> a
'abcde'
>>> a.zfill(10)
'00000abcde'

zfill: 返回指定長度的字符串,原字符串右對齊,前面填充0.


str的join方法

>>> ''.join('123456')
'123456'
>>> ' '.join('123456')
'1 2 3 4 5 6'
>>> 'a'.join('123456')
'1a2a3a4a5a6'
>>> ' '.join(('1', '2', '3'))
'1 2 3'

join: 將序列中的元素以指定的字符連接成一個新的字符串.
如果參數不是字符串序列, 那麼序列中的元素必須爲字符串類型的.


str的format方法

>>> a = '你好啊! {}'
>>> a.format('Dr.Lee')
'你好啊! Dr.Lee'

format: 用於格式化字符串.
format的使用形式很多, 很靈活這裏就不過多講解.
在Python3.6中也有新特性f'asdasd{變量名}', 來格式化輸出字符串.


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章