方法是与对象有紧密联系的函数,对象可能是列表、数字,也可能是字符串或其他类型的对象。
调用语法如下:
对象.方法()
在python中,一切皆对象
1.列表的常用方法
>>>li=[1,2,3]
>>>dir(li) #查看方法和属性
['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__',
'__hash__', '__iadd__', '__imul__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__',
'__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__',
'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']
双下划线的是魔法方法(面向对象才学),后面的是方法
>>>help(list) #查看方法和属性 箭头表示返回类型
(1)L.append(obj) 在列表末尾添加新的对象。
>>>help(list.append)
# L.append(object) -> None -- append object to end 添加对象到末尾,无返回值
>>>li.append(3) #添加3到末尾
>>>li #[1, 2, 3]
(2)L.clear() 清空整个列表。
# L.clear() -> None -- remove all items from L 清除所有items(项) 返回None
>>>li.clear() #[]
(3)L.copy() 复制列表。
# L.copy() -> list -- a shallow copy of L 复制一个列表,返回一个列表
>>>li2=li.copy() #拿li2接收 这两个对象是不一样的,虽然内容一样
>>>id(li) #1779135890632
>>>id(li2) #1779135891848
(4)L.count(obj) 统计某个元素在列表中出现的次数。
# L.count(value) -> integer -- return number of occurrences of value 记某一元素在列表中出现的次数 返回一个整型
>>>li.count(1) #1
(5)L.extend(obj) 用obj扩展原来的列表。
# L.extend(iterable) -> None -- extend list by appending elements from the iterable 用于在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)
# 序列类型都是可迭代的
>>>li.extend([1]) #[1, 2, 3, 1]
>>>dir(li) #__iter__ 有这个就是可迭代的
#extend()和append()的区别就是
>>>li.extend([1]) #[1, 2, 3, 1]
>>>li.append([1,2,3]) #[1, 2, 3, 1, [1, 2, 3]]
#还可以用分片赋值实现相同的结果
>>>a=['hello','world']
>>>b=['python','is','funny']
>>>a[len(a):]=b #['hello', 'world', 'python', 'is', 'funny']
(6)L.index(obj) 从列表中找某个值第一个匹配项的索引位置。
#L.index(value, [start, [stop]]) -> integer -- return first index of value.Raises ValueError if the value is not present. 用于从列表中找出某个值第一个匹配项的索引第一次出现的位置
>>>li2.index(1) #返回这个value第一次出现的位置
#默认是从0开始到末尾,但也可以指定:L.index(value, [start, [stop]]) #中括号是可选参数
>>>li2.index(1,2) #从2位置开始找1,默认到末尾
>>>li2.index(1,2,5) #中括号时可选参数
(7)L.insert(index,obj) 插入元素,可以指定位置。
# L.insert(index, object) -- insert object before index 将对象插入列表
>>>li2.insert(3,'lucky') #在3的位置插入
# 也可以和extend()一样用分片赋值实现
>>>li2[2:2]=['ssss'] #['a', 'b', 'ssss', 'd', 'c']
(8)L.pop(index) 出栈,可以指定位置。index默认是L[-1]
#L.pop([index]) -> item -- remove and return item at index (default last).Raises IndexError if list is empty or index is out of range.
# 用于移除列表中的一个元素(默认是最后一个元素),并且返回该元素的值
>>>li2.pop() #有返回值,也改变了列表,把列表中的最后一个元素抛出来,默认删除最后一个元素
>>>li2.pop(2) #也可以指定索引删除
#pop方法是惟一一个既能修改又能返回元素值(除了None)的列表方法。要将若干盘子堆成一堆,只能在一个盘子的上面放另一一个一个wangxiana个盘子;
#要拿盘子时,只能从顶部一个一个往下拿,最后放入的盘子是最先被拿的。栈也是这样,最后放入栈的最先被移除,称为LIFO(last in first out),即后进先出
#栈中的放入和移除操作有统一的称谓---入栈(push)和出栈(pop)
#使用pop方法可以实现一种常见的数据结构--栈。
#栈的原理就像是堆放一个盘子,(9)L.remove(obj) 移除指定元素从左边开始的第一个。
#L.remove(value) -> None -- remove first occurrence of value.Raises ValueError if the value is not present. 移除列表中某个值的第一个匹配项
#指定元素删除,没有返回值,只删除了第一次出现重复的元素,第二次之后出现的值没有被移除
#删除没有的元素会报错
>>>li2.remove('ssss') #['a', 'b', 'd', 'c']
>>>li2.remove('ss') #ValueError: list.remove(x): x not in list
#有一点需要了解的是:remove是一个没有返回值的原位置元素变更方法,它修改了列表却没有返回值,与pop方法正好相反。
(10)L.reverse() 反向列表中元素。
# L.reverse() -- reverse *IN PLACE* 用于反向列表中的元素
>>>li2.reverse() #['c', 'd', 'b', 'a']
#该方法改变了列表但不返回值
(11)L.sort() 对原列表进行排序。列表中的元素要类型相同 (key = len)
# L.sort(key=None, reverse=False) -> None -- stable sort *IN PLACE* 对原列表进行排序,如果指定参数,就使用参数指定的比较方法进行排序。默认升序排序
>>>li=[2,1,5,6,3]
>>>li.sort() #必须是同种类型的才可以排序
>>>li2=['a','b','d','c'] #默认根据ASCII码排序
>>>li4=['b','ab','a']
>>>li4.sort() #['a', 'ab', 'b']
>>>li4.sort(key=len) #['a', 'b', 'ab']
>>>li4.sort(key=len,reverse=True) #['ab', 'a', 'b']
(11)L.clear() 清空列表,类似于 del a[:]
# L.clear() -> None -- remove all items from L
(12)L.copy() 复制列表
# L.copy() -> list -- a shallow copy of
>>> li=[1,2,3]
>>> li1=li.copy()
>>> li1 #[1, 2, 3]
>>> id(li) #2561239466632
>>> id(li1) #2561239617672
#复制完后是两个对象,内容一样但是,地址不一样,这叫浅复制
内置函数:
sorted() 和 reversed()
# sorted函数可以直接获取列表的副本进行排序
>>>num=[5,8,1,3,6,]
>>>n=sorted(num) #[1,3,,5,6,8]
#sorted函数可以用于任何序列,返回结果都是一个列表
>>>sorted('python') #['h', 'n', 'o', 'p', 't', 'y']
# reversed函数,可以对一个序列进行反向迭代。这个函数并不会返回列表,而是返回一个迭代器对象,可以通过list函数把返回的对象转换为列表。
>>>num=[1,2,3]
>>> reversed(num) #
>>>list(reversed(num)) #[3,2,1]
2.元组的常用方法
(1)count() 统计某个元素在元组中出现的次数。
# T.count(value) -> integer -- return number of occurrences of value 记某一元素在元组中出现的次数 返回一个整型
(2)index() 从元组中找某个值第一个匹配项的索引位置。
#T.index(value, [start, [stop]]) -> integer -- return first index of value.Raises ValueError if the value is not present. 用于从元组中找出某个值第一个匹配项的索引第一次出现的位置
内置函数:len(tuple),max(tuple),min(tuple)
3.字符串的常用方法
dir(str)
'''
'capitalize', 'casefold', 'center', 'count', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'format_map', 'index', 'isalnum',
'isalpha', 'isdecimal', 'isdigit', 'isidentifier', 'islower', 'isnumeric', 'isprintable', 'isspace', 'istitle',
'isupper', 'join', 'ljust', 'lower', 'lstrip', 'maketrans', 'partition', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition',
'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill'
'''
(1)s.count(x):返回字符串 x 在 s 中出现的次数,带可选参数
# S.count(sub[, start[, end]]) -> int [, start[, end]]代表可选参数,start为开始索引,end为结束索引
>>>s='asdfasdf'
>>>s.count('a') #2
(2)s.endswith(x):如果字符串s以x结尾,返回True
# S.endswith(suffix[, start[, end]]) -> bool 检测是否以某个字符串结束,可以指定范围,返回一个bool值
>>>s.endswith('f') #返回一个bool型,字符串是否以''结束 True
(3)s.startswith(x):如果字符串s以x开头,返回True
# S.startswith(prefix[, start[, end]]) -> bool 检测是否以某个字符串开始,可以指定范围,返回一个bool值
>>>s.startswith('ff') #返回一个false
(4)s.find(x) :返回字符串中出现x的最左端字符的索引值,如果不在则返回-1
# S.find(sub[, start[, end]]) -> int 用于检测字符串中是否包含子字符串str,查找元素的索引位置,第一次出现的索引,找不到的话就返回-1,跟index()(会报错)不一样
>>> field='do it now'
>>> field.find('do') #0
>>> field.find(' ') #2
>>> field.find('now') #6
>>> field.find('python‘) #-1
>>> field.index('z') #报错
#如果找到就返回首个字符串的索引,没有找到就返回-1
(5)s.index(x):返回字符串中出现x的最左端的索引值,如果不在则抛出valueError异常
# S.index(sub[, start[, end]]) -> int
>>> field='do it now'
>>> field.index('do') #0
>>> field.find('python‘) #SyntaxError: EOL while scanning string literal
(6)s.isalpha () :测试是否全是字母,都是字母则返回 True,否则返回 False.
# S.isalpha() -> bool
>>>s.isalpha() #测试是否全是字母
>>>s2='12321654'
>>>s2.isalpha() #False
>>>s2='aaaaaa我'
>>>s2.isalpha() #True
(7)s.isdigit () :测试是否全是数字,都是数字则返回 True 否则返回 False.
# S.isdigit() -> bool
>>>s.isdigit() #测试是否为全数字
>>>s3='-123' #负数被默认为字符串
>>>s.isdigit() #False
>>>s3='123'
>>>s.isdigit() #True
(8)s.islower () :测试是否全是小写
# S.islower() -> bool
(9)s.isupper () :测试是否全是大写
# S.isupper() -> bool
(10)s.lower () :将字符串转为小写
# S.lower() -> str 有返回值的 原对象没有变
>>> s='ASDASDaa'
>>> s.lower() #'asdasdaa'
(11)s.upper () :将字符串转为大写
# S.upper() -> str 有返回值的 原对象没有变
>>> field='do it now'
>>> field.find('It') #-1
>>> fild.upper().find('It'.upper())
>>> field.upper().find('It'.upper()) #3
如果想要在一个字符串中查找某个子字符串并忽略大小写,即字符串全部转换为大写后能找到对应子串
(12)s.replace (x,y) :子串替换,在字符串s中出现字符串x的任意位置都用y进行替换
# S.replace(old, new[, count]) -> str 把字符串中的old(旧字符串)替换成new(新字符串),如果指定第3个参数count,替换次数就为max,替换从左到右
>>> field 'do it now'
>>> field='do it now,do it now'
>>> field.replace('do','Just do') #'Just do it now,Just do it now'
>>> field.replace('do','Just do',1) #'Just do it now,do it now'
(13)s.split():返回一系列用空格分割的字符串列表
# S.split(sep=None, maxsplit=-1) -> list of strings -1为全部切 sep,maxsplit为默认参数,sep是将要分割的字符串,maxsplit是说明最多要分割几个,返回一个列表
>>> field #'do it now,do it now'
>>> field.split() #['do', 'it', 'now,do', 'it', 'now']
>>>s='aaaa'
>>>s.split() #['aaaa'] 返回一个列表
>>> field.split('o',1) #['d', ' it now,do it now']
>>> field.split('o',2) #['d', ' it n', 'w,do it now']
(14)s.join():将序列中的元素以指定字符连接成一个新字符串
# S.join(iterable) -> str
>>> field=['1','2','3','4']
>>> mark='+'
>>> mark.join(field) #'1+2+3+4'
>>> field.join(mark) #list没有join方法
Traceback (most recent call last):
File "", line 1, in
field.join(mark)
AttributeError: 'list' object has no attribute 'join'
>>> num=[1,2,3,4]
>>> mark.join(num)
Traceback (most recent call last):
File "", line 1, in
mark.join(num)
TypeError: sequence item 0: expected str instance, int found
#进行join操作调用和被调用的对象必须都是字符串,任意一个不是字符串的都会报错
(14)s.swapcase():用于对字符串的大小写字母进行转换,将字符串中大写转换为小写,小写转换成大写
# S.swapcase() -> str
>>> s1='adsfASD'
>>> s1.swapcase() #'ADSFasd'
(15)s.strip(): 用于移除字符串头尾指定的字符(默认为空格)
# S.strip([chars]) -> str
>>> field='----do --it-- now----'
>>> field.strip('-') #'do --it-- now'
(16)s.translate(): 根据参数table给出的表转换字符串的字符,将要过滤掉的字符放到del参数中
# S.translate(table) -> str
>>> intab='adfas'
>>> outtab='12345'
>>> trantab=str.maketrans(intab,outtab)
>>> st='just do it'
>>> st.translate(trantab) #'ju5t 2o it'
Python3字符串方法
1capitalize() 将字符串的第一个字符转换为大写
2
center(width, fillchar)返回一个指定的宽度 width 居中的字符串,fillchar 为填充的字符,默认为空格。
3
count(str, beg= 0,end=len(string))返回 str 在 string 里面出现的次数,如果 beg 或者 end 指定则返回指定范围内 str 出现的次数
4
bytes.decode(encoding="utf-8", errors="strict")Python3 中没有 decode 方法,但我们可以使用 bytes 对象的 decode() 方法来解码给定的 bytes 对象,这个 bytes 对象可以由 str.encode() 来编码返回。
5
encode(encoding='UTF-8',errors='strict')以 encoding 指定的编码格式编码字符串,如果出错默认报一个ValueError 的异常,除非 errors 指定的是'ignore'或者'replace'
6
endswith(suffix, beg=0, end=len(string))检查字符串是否以 obj 结束,如果beg 或者 end 指定则检查指定的范围内是否以 obj 结束,如果是,返回 True,否则返回 False.
7
expandtabs(tabsize=8)把字符串 string 中的 tab 符号转为空格,tab 符号默认的空格数是 8 。
8
find(str, beg=0 end=len(string))检测 str 是否包含在字符串中 中,如果 beg 和 end 指定范围,则检查是否包含在指定范围内,如果是返回开始的索引值,否则返回-1
9
index(str, beg=0, end=len(string))跟find()方法一样,只不过如果str不在字符串中会报一个异常.
10
isalnum()如果字符串至少有一个字符并且所有字符都是字母或数字则返 回 True,否则返回 False
11
isalpha()如果字符串至少有一个字符并且所有字符都是字母则返回 True, 否则返回 False
12
isdigit()如果字符串只包含数字则返回 True 否则返回 False..
13
islower()如果字符串中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是小写,则返回 True,否则返回 False
14
isnumeric()如果字符串中只包含数字字符,则返回 True,否则返回 False
15
isspace()如果字符串中只包含空格,则返回 True,否则返回 False.
16
istitle()如果字符串是标题化的(见 title())则返回 True,否则返回 False
17
isupper()如果字符串中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是大写,则返回 True,否则返回 False
18
join(seq)以指定字符串作为分隔符,将 seq 中所有的元素(的字符串表示)合并为一个新的字符串
19
len(string)返回字符串长度
20
ljust(width[, fillchar])返回一个原字符串左对齐,并使用 fillchar 填充至长度 width 的新字符串,fillchar 默认为空格。
21
lower()转换字符串中所有大写字符为小写.
22
lstrip()截掉字符串左边的空格
23
maketrans()创建字符映射的转换表,对于接受两个参数的最简单的调用方式,第一个参数是字符串,表示需要转换的字符,第二个参数也是字符串表示转换的目标。
24
max(str)返回字符串 str 中最大的字母。
25
min(str)返回字符串 str 中最小的字母。
26
replace(old, new[, max])把 将字符串中的 str1 替换成 str2,如果 max 指定,则替换不超过 max 次。
27
rfind(str, beg=0,end=len(string))类似于 find()函数,不过是从右边开始查找.
28
rindex( str, beg=0, end=len(string))类似于 index(),不过是从右边开始.
29
rjust(width[,, fillchar])返回一个原字符串右对齐,并使用fillchar(默认空格)填充至长度 width 的新字符串
30
rstrip()删除字符串字符串末尾的空格.
31
split(str="", num=string.count(str))num=string.count(str)) 以 str 为分隔符截取字符串,如果 num 有指定值,则仅截取 num 个子字符串
32
splitlines([keepends])按照行('\r', '\r\n', \n')分隔,返回一个包含各行作为元素的列表,如果参数 keepends 为 False,不包含换行符,如果为 True,则保留换行符。
33
startswith(str, beg=0,end=len(string))检查字符串是否是以 obj 开头,是则返回 True,否则返回 False。如果beg 和 end 指定值,则在指定范围内检查。
34
strip([chars])在字符串上执行 lstrip()和 rstrip()
35
swapcase()将字符串中大写转换为小写,小写转换为大写
36
title()返回"标题化"的字符串,就是说所有单词都是以大写开始,其余字母均为小写(见 istitle())
37
translate(table, deletechars="")根据 str 给出的表(包含 256 个字符)转换 string 的字符, 要过滤掉的字符放到 deletechars 参数中
38
upper()转换字符串中的小写字母为大写
39
zfill (width)返回长度为 width 的字符串,原字符串右对齐,前面填充0
40
isdecimal()检查字符串是否只包含十进制字符,如果是返回 true,否则返回 false。