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
.
這裏設置tabsize
爲4
即把字符串中的\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
: 去除字符串開頭(左)和結尾(右)的空格或傳入的參數字符.
lstrip
和rstrip
分別表示去除左邊或右邊的字符.
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{變量名}'
, 來格式化輸出字符串.