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{变量名}'
, 来格式化输出字符串.