在python中,一个对象的特征也称为属性(attribute)。它所具有的行为也称为方法(method)
结论:对象=属性+方法
在python中,把具有相同属性和方法的对象归为一个类(class)
比如人类,动物,植物等等,这些都是类的概念。
类是对象的模板或蓝图,类是对象的抽象化,对象是类的实例化。类不代表具体的事物,而对象表示具体的事物。
具有的功能:
|
1
|
class int(object):
|
(1).返回表示该数字的时占用的最少位数
|
1
2
3
4
|
def bit_length(self):
例:>>> bin(10)
'0b1010' #0b是二进制,1010是所占位数
|
(2).返回绝对值
|
1
2
3
4
5
6
7
|
def __abs__(self):
例:>>> absolute = -10
>>> absolute.__abs__()10>>> abs(-10)
10 |
(3).相除,得到商和余数组成的元组
|
1
2
3
4
5
6
|
def __divmod__(self)
例:>>> age = 21
>>> sb = age.__divmod__(6)
>>> print (sb)
(3, 3)
|
(4).int转换为浮点类型
(5).__cmp__(self, y)比较两个数大小 注:在3.x版本被
(6).__coerce__(self, y)强制生成一个元组 注:在3.x版本被取消
(7).数值相加
|
1
2
3
4
5
6
7
8
|
def __add__(self,other)
例:>>> num1 = 15
>>> num2 = 20
>>> print (num1+num2)
35>>> print (num1.__add__(num2))
35 |
|
1
2
3
4
5
6
|
>>> bool = 0
>>> print(bool.__bool__())
False>>> bool = 1
>>> print(bool.__bool__())
True |
9. 判断是是否相等
|
1
2
3
4
|
>>> zhi1=10
>>> zhi2=11
>>> print (zhi1.__eq__(zhi2))
False |
10. 返回浮点
|
1
2
3
|
>>> zhi = 10
>>> print(zhi.__float__())
10.0 |
11. 地板除
|
1
2
3
4
|
>>> a=10
>>> b=3
>>> print(a.__floordiv__(b))3 |
12. 大于等于
|
1
2
3
4
|
>>> a=20
>>> b=12
>>> print(a.__ge__(b))
True |
13. 大于
|
1
2
|
>>> print(a.__gt__(b))
True |
14.哈希
|
1
|
print(num.__hash__())
|
15.__invert__ :取反
|
1
2
3
|
>>> a=45
>>> print(a.__invert__())
-46
|
16.小于等于
|
1
2
3
4
|
>>> a=10
>>> b=20
>>> print (a.__lt__(b))
True |
17. __lshift__ :左移位
|
1
2
3
4
|
>>> num1 = 10
>>> num2 = 10
>>> print (num1.__lshift__(num2))
10240 |
18.求模
|
1
2
3
4
|
>>> a=20
>>> b=11
>>> print(a.__mod__(b))
9 |
19.相乘
|
1
2
3
4
|
>>> a=10
>>> b=2
>>> print (a.__mul__(b))
20 |
20.取反
|
1
2
3
|
>>> a=21
>>> print (a.__neg__())
-21
|
21.不等于
|
1
2
3
4
|
>>> a=20
>>> b=10
>>> print(a.__ne__(b))
True |
22.取正数
|
1
2
3
4
5
6
|
>>> a=-10
>>> print(a.__pos__())
-10
>>> a=10
>>> print(a.__pos__())
10 |
23 乘方
|
1
2
3
|
>>> a=10
>>> print(a.__pow__(10))
10000000000 |
24.右加(以下前缀为r的都是右;前缀为l的都是左)
|
1
|
print(a.__radd__(b))
|
25.右或
|
1
|
print(a.__repr__())
|
26.右除以左,返回商和余数
|
1
|
print(a.__repr__())
|
27.转换为解释器可读取的形式
|
1
|
print(a.__repr__())
|
28.转换为字符串
|
1
2
3
|
>>> a=10
>>> print(a.__pow__(10))
10000000000 |
29.求差
|
1
2
3
|
>>>num=10
>>>num2=20
print(num.__sub__(num2)) |
2、long型
具有的功能:
|
1
|
class long(object):
|
同int型
3.float型
1.返回分子分母数构成的元祖
|
1
|
as_integer_ratio() |
2.将十六进制数转换为浮点数
|
1
|
print(float.fromhex('0x1.ffffp10'))
|
3.将浮点数转换为十六进制数
|
1
|
print(2047.984375.hex())
|
4.判断浮点数是不是整数
|
1
2
3
|
f1 = 10.2
f2 = 10.0
print(f1.is_integer())31print(f2.is_integer())
|
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
二.字符串
具有的功能:
|
1
|
class str(basestring):
|
1.首字母变大写
|
1
2
3
4
5
|
def capitalize(self):
例:>>> name = 'yaoyao'
>>> print (name.capitalize())
Yaoyao |
2.内容居中
|
1
2
3
4
5
6
|
def center(self, width, fillchar=None):
""" 内容居中,width:总长度;fillchar:空白处填充内容,默认无 """例:>>> name = 'liuyao'
>>> print (name.center(20,'*'))
*******liuyao*******
|
3.查询个数
|
1
2
3
4
5
6
7
|
count(self, sub, start=None, end=None)子序列个数 sub:要查询的子序列 start:开始位置 end:结束位置
例:>>> cou = 'asdfghjasdfgjqweryuzxcvbnm'
>>> print (cou.count('as'))
2>>> print (cou.count('as',1,25))
1 |
4.编码修改
|
1
2
3
4
5
6
|
encode(self, encoding=None, errors=None)编码,针对unicode encoding='解码的格式'
例:>>> name = '刘耀'
>>> print (name.encode('gbk'))
b'\xc1\xf5\xd2\xab'
>>> |
5.endswith
|
1
2
3
4
5
6
7
|
endswith(self, suffix, start=None, end=None)是否以xxx结尾 suffix:填入结尾的字符串 start=在第几个字符开始 end=在第几个字符结束
endswith() 方法用于判断字符串是否以指定后缀结尾,如果以指定后缀结尾返回True,否则返回False。可选参数"start"与"end"为检索字符串的开始与结束位置。
例:>>> name='asdfghjklo'
>>> print (name.endswith('lo',0,6))
False>>> |
6.expandtabs()
|
1
2
3
4
5
|
expandtabs() 方法把字符串中的 tab 符号('\t')转为空格,默认的空格数 tabsize 是 8
例:>>> extab = 'one\ttwo'
>>> print (extab.expandtabs())
one two |
7.find
|
1
2
3
4
5
6
7
|
find(self, sub, start=None, end=None)寻找子序列位置,如果没找到,返回 -1
例:>>> name = 'yaotwosiji'
>>> print (name.find('two',1,8))
3>>> print (name.find('two',1,3))
-1
|
8.casefold
|
1
2
|
casefold(self)大写转小写 注:3.x新增方法,2.x没有
例: |
9.format格式化
|
1
2
3
4
5
6
|
format(*args, **kwargs)字符串格式化
例:>>> name = 'liuyao'
>>> age = '21'
>>> print ('姓名{0},年龄{1}'.format(name,age))
姓名liuyao,年龄21
|
10.index
|
1
2
3
4
5
6
7
8
9
|
index(self, sub, start=None, end=None)子序列位置,如果没找到,报错
例:>>> name = 'asdfghjklqwertyui'
>>> print (name.index('fg'))
3>>> print (name.index('fg',1,3))
Traceback (most recent call last): File "<stdin>", line 1, in <module>
ValueError: substring not found
|
11.isalnum
|
1
2
3
4
5
6
7
8
|
isalnum(self)如果字符串至少有一个字符并且所有字符都是字母或数字则返回 True,否则返回 False
例:>>> zifu = 'yao1995'
>>> print (zifu.isalnum())
True>>> zifutab = 'yao 1995'
>>> print (zifutab.isalnum())
False |
12.isalpha
|
1
2
3
4
5
|
isalpha(self)如果字符串至少有一个字符并且所有字符都是字母则返回 True,否则返回 False
例:>>> zifutab = 'yao'
>>> print (zifutab.isalpha())
True |
13.isdigit
|
1
2
3
4
5
|
isdigit(self)如果字符串只包含数字则返回 True 否则返回 False
例:>>> shuzi = '1995'
>>> print (shuzi.isdigit())
True |
14.islower
|
1
2
3
4
5
|
islower(self)如果字符串中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是小写,则返回 True,否则返回 False
例:>>> zifu = 'Liuyao'
>>> print (zifu.islower())
False |
15.isspace
|
1
2
3
4
5
|
isspace(self)如果字符串中只包含空格,则返回 True,否则返回 False
例:>>> kongge = ' '
>>> print(kongge.isspace())
True |
16.istitle
|
1
2
3
4
5
|
istitle(self)如果字符串中所有的单词拼写首字母是否为大写,且其他字母为小写则返回 True,否则返回 False
例:>>> zifu = 'Liu Yao'
>>> print (zifu.istitle())
True |
17.isupper
|
1
2
3
4
5
|
isupper(self)如果字符串中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是大写,则返回 True,否则返回 False
例:>>> zifu = 'LIU YAO'
>>> print (zifu.isupper())
True |
18.join
|
1
2
3
4
5
6
|
join(self, iterable)返回通过指定字符连接序列中元素后生成的新字符串
例:>>> lj = '^'
>>> name =('y','a','o')
>>> print (lj.join(name))
y^a^o |
19.ljust
|
1
2
|
ljust(self, width, fillchar=None)返回一个原字符串左对齐,并使用空格填充至指定长度的新字符串。如果指定的长度小于原字符串的长度则返回原字符串
例: |
20.lower
|
1
2
3
4
|
lower(self)返回将字符串中所有大写字符转换为小写后生成的字符串
>>> name = 'LIUYAO'
>>> print (name.lower())
liuyao |
21.lstrip
|
1
2
3
4
|
lstrip(self, chars=None)返回截掉字符串左边的空格或指定字符后生成的新字符串
>>> name = 'liuyaoliuyaoliuyao'
>>> print (name.lstrip('liu'))
yaoliuyaoliuyao |
22.partition
|
1
2
3
4
|
partition(self, sep)返回一个3元的元组,第一个为分隔符左边的子串,第二个为分隔符本身,第三个为分隔符右边的子串
>>> who = 'wo shi liuyao'
>>> print (who.partition('shi'))
('wo ', 'shi', ' liuyao')
|
23.replace
|
1
2
3
4
5
6
|
replace(self, old, new, count=None)返回字符串中的 old(旧字符串) 替换成 new(新字符串)后生成的新字符串,如果指定第三个参数max,则替换不超过 max 次
>>> str1 = 'ni shi wo shi shei shi'
>>> print (str1.replace('shi','ta'))
ni ta wo ta shei ta>>> print (str1.replace('shi','ta',1))
ni ta wo shi shei shi |
24.split
|
1
2
3
4
5
6
|
split(self, sep=None, maxsplit=None)通过指定分隔符对字符串进行切片,如果参数num 有指定值,则仅分隔 num 个子字符串
>>> str1 = 'a1 b2 c3 d4'
>>> print (str1.split())
['a1', 'b2', 'c3', 'd4']
>>> print (str1.split(' ',2))
['a1', 'b2', 'c3 d4']
|
25.splitlines
|
1
2
3
4
5
6
7
8
9
10
11
12
13
|
splitlines(self, keepends=False)按照行分隔,返回一个包含各行作为元素的列表,如果 num 指定则仅切片 num 个行
>>> str1 = '\na1b2 c3 d4'
>>> str1 = '\na1b2\nc3\nd4\n'
>>> print (str1)
a1b2c3d4 >>> print (str1.splitlines())
['', 'a1b2', 'c3', 'd4']
>>> print (str1.splitlines(2))
['\n', 'a1b2\n', 'c3\n', 'd4\n']
|
26.startswith
|
1
2
3
4
5
6
|
startswith(self, prefix, start=None, end=None)用于检查字符串是否是以指定子字符串开头,如果是则返回 True,否则返回 False。如果参数 beg 和 end 指定值,则在指定范围内检查
>>> name = 'LIUyao'
>>> print (name.startswith('LI'))
True>>> print (name.startswith('ya'))
False |
27.swapcase
|
1
2
3
4
|
swapcase(self)用于对字符串的大小写字母进行转换
>>> name = 'LIUyao'
>>> print (name.swapcase())
liuYAO |
28.translate
|
1
|
translate(self, table, deletechars=None)根据参数table给出的表(包含 256 个字符)转换字符串的字符, 要过滤掉的字符放到 del 参数中,table -- 翻译表,翻译表是通过maketrans方法转换而来,deletechars -- 字符串中要过滤的字符列表。
|
29.upper
|
1
2
3
4
|
upper(self)将字符串中的小写字母转为大写字母
>>> name = 'yaoyao'
>>> print (name.upper())
YAOYAO |
30.zfill
|
1
2
3
4
5
6
|
zfill(self, width)返回指定长度的字符串,width -- 指定字符串的长度。原字符串右对齐,前面填充0。
>>> str1 = 'a1 b2 c3 d4'
>>> print (str1.zfill(10))
a1 b2 c3 d4>>> print (str1.zfill(15))
0000a1 b2 c3 d4
|
三.列表
具有以下方法:
1、追加
|
1
2
3
4
5
|
append(self, p_object)用于在列表末尾添加新的对象,obj -- 添加到列表末尾的对象,该方法无返回值,但是会修改原来的列表。
>>> lie =[1,2,3,4,5]
>>> lie.append(6)
>>> print (lie)
[1, 2, 3, 4, 5, 6]
|
2、统计
|
1
2
3
4
|
count(self, value)用于统计某个元素在列表中出现的次数,value -- 列表中统计的对象,返回元素在列表中出现的次数。
>>> lie = [1,2,3,4,5,1,2,3]
>>> print (lie.count(2))
2 |
3、合并
|
1
2
3
4
5
6
7
8
|
extend(self, iterable)用于在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表),seq -- 元素列表,该方法没有返回值,但会在已存在的列表中添加新的列表内容
>>> list1[1, 2, 3, 4, 5]
>>> list2['a', 'b', 'c', 'd', 'f']
>>> list1.extend(list2)>>> list1[1, 2, 3, 4, 5, 'a', 'b', 'c', 'd', 'f']
|
4、索引
|
1
2
3
4
5
|
index(self, value, start=None, stop=None)用于从列表中找出某个值第一个匹配项的索引位置,value -- 查找的对象,该方法返回查找对象的索引位置,如果没有找到对象则抛出异常。
>>> list1[1, 2, 3, 4, 5, 'a', 'b', 'c', 'd', 'f']
>>> print (list1.index('a'))
5 |
5、指定插入
|
1
2
3
4
5
6
|
insert(self, index, p_object)用于将指定对象插入列表,index -- 对象obj需要插入的索引位置,obj -- 要插入列表中的对象,该方法没有返回值,但会在列表指定位置插
>>> list1[1, 2, 3, 4, 5, 'a', 'b', 'c', 'd']
>>> list1.insert(2,'6')
>>> list1[1, 2, '6', 3, 4, 5, 'a', 'b', 'c', 'd']
|
6、删除最后一个元素
|
1
2
3
4
5
|
pop(self, index=None)用于移除列表中的一个元素(默认最后一个元素),并且返回该元素的值,index-- 可选参数,要移除列表元素的对象,该方法返回从列表中移除的元素对象。
>>> list1.pop()'f'>>> list1[1, 2, 3, 4, 5, 'a', 'b', 'c', 'd']
|
7、指定删除
|
1
2
3
4
5
6
|
remove(self, value)用于移除列表中某个值的第一个匹配项,value -- 列表中要移除的对象,该方法没有返回值但是会移除两种中的某个值的第一个匹配项。
>>> list1[1, 2, '6', 3, 4, 5, 'a', 'b', 'c', 'd']
>>> list1.remove(5)
>>> list1[1, 2, '6', 3, 4, 'a', 'b', 'c', 'd']
|
8、反向存放
|
1
2
3
4
5
6
|
reverse(self)用于反向列表中元素,该方法没有返回值,但是会对列表的元素进行反向排序。
>>> list1[1, 2, '6', 3, 4, 'a', 'b', 'c', 'd']
>>> list1.reverse()>>> list1['d', 'c', 'b', 'a', 4, 3, '6', 2, 1]
|
9、排序
|
1
2
3
4
5
|
sort(self, cmp=None, key=None, reverse=False)用于对原列表进行排序,如果指定参数,则使用比较函数指定的比较函数,该方法没有返回值,但是会对列表的对象进行排序。
>>> list1 = [1,2,3,4,5,7,8,6,5]
>>> list1.sort()>>> list1[1, 2, 3, 4, 5, 5, 6, 7, 8]
|
10、反序
|
1
|
sorted内建函数:对序列进行反序,并返回一个列表
|
四.元祖
元组的意义:
元组可以在映射中当作键使用;
元组作为很多内建函数和方法的返回值存在。
元组的元素是不能被修改,但元素的元素能可以被被修改的
具有以下方法:
1.统计
|
1
2
3
4
5
|
>>> boy=('kelin','yaoyao','liuyao','shabi')
>>> type(boy)
<class 'tuple'>
>>> boy.count('yaoyao')
1 |
2.索引
|
1
2
|
>>> boy.index('liuyao')
2 |
五.字典
当数据量达到上百万时,循环字典就不适合用dict.items(),因为首先会把一对对key和value转化为列表,然后在循环遍历输出,会增加内存使用。建议使用如下:
|
1
2
3
4
5
6
7
|
>>> a = {1:'a',2:'b'}
>>> for k in aa:print(k,aa[k])
(1, 'a')
(2, 'b')
>>> for k in aa.keys():print(k,aa[k])
(1, 'a')
(2, 'b')
|
具有以下方法:
1、删除字典内所有元素
|
1
2
3
4
5
6
7
|
clear(self)用于删除字典内所有元素,该函数没有任何返回值。
>>> dic = {'k1':'v1','k2':'v2'}
>>> dic{'k2': 'v2', 'k1': 'v1'}
>>> dic.clear()>>> dic{} |
2、浅复制
|
1
2
3
4
5
|
copy(self)返回一个字典的浅复制。
>>> dic = {'k1':'v1','k1':'v2'}
>>> dic.copy(){'k1': 'v2'}
>>> |
3、get
|
1
2
3
4
5
|
get(self, k, d=None)返回指定键的值,如果值不在字典中返回默认值,key -- 字典中要查找的键,default -- 如果指定键的值不存在时,返回该默认值值。
>>> dic = {'k1':'v1','k2':'v2'}
>>> dic.get('k1')
'v1'>>> |
4、has_key
|
1
|
has_key(self, k)用于判断键是否存在于字典中,如果键在字典dict里返回true,否则返回false,k -- 要在字典中查找的键。注:3.x已删除该函数
|
5、items
|
1
2
3
4
|
items(self)以列表返回可遍历的(键, 值) 元组数组。
>>> dic={'name':'yaoyao','age':'21','job':'IT'}
>>> dic.items()dict_items([('age', '21'), ('name', 'yaoyao'), ('job', 'IT')])
|
6、iteritems
|
1
|
iteritems(self)项可迭代。注:3.x已删除该函数
|
7、iterkeys
|
1
|
iterkeys(self)key可迭代。注:3.x已删除该函数
|
8、itervalues
|
1
|
itervalues(self)value可迭代。注:3.x已删除该函数
|
9、keys
|
1
2
3
4
|
keys(self)以列表返回一个字典所有的键。
>>> dic={'name':'yaoyao','age':'21','job':'IT'}
>>> dic.keys()dict_keys(['age', 'name', 'job'])
|
10、删除键
|
1
2
3
4
5
6
|
pop(self, k, d=None)获取并在字典中移除,k -- 要在字典中查找的键。>>> dic={'name':'yaoyao','age':'21','job':'IT'}
>>> dic.pop('job')
'IT'>>> dic{'age': '21', 'name': 'yaoyao'}
|
11、popitem
|
1
2
3
4
5
6
|
popitem(self)获取并在字典中移除
>>> dic={'name':'yaoyao','age':'21','job':'IT'}
>>> dic.popitem()('age', '21')
>>> dic{'name': 'yaoyao', 'job': 'IT'}
|
12、setdefault
|
1
2
3
4
5
|
setdefault(self, k, d=None)如果key不存在,则创建,如果存在,则返回已存在的值且不修改
>>> dic={'name':'yaoyao','age':'21','job':'IT'}
>>> dic.setdefault('sex')
>>> dic{'sex': None, 'age': '21', 'name': 'yaoyao', 'job': 'IT'}
|
13、更新
|
1
2
3
4
5
6
|
update(self, E=None, **F)更新
>>> dic={'name':'yaoyao','age':'21','job':'IT'}
>>> dic_1={'sex':'man'}
>>> dic.update(dic_1)>>> dic{'sex': 'man', 'age': '21', 'name': 'yaoyao', 'job': 'IT'}
|
14、values
|
1
2
3
4
|
values(self)以列表返回字典中的所有值。
>>> dic={'name':'yaoyao','age':'21','job':'IT'}
>>> dic.values()dict_values(['21', 'yaoyao', 'IT'])
|
15、viewitems
|
1
|
viewitems(self)所有项,只是将内容保存至view对象中。注:3.x已删除该函数
|