学会查看帮助
type(类型名) 查看对象的类型
dir(类型名) 查看类中提供的所有功能
help(类型名) 查看类中所有详细的功能
help( 类型名.功能名) 查看类中某功能的详细
内置方法,非内置方法:
带下划线的标识私有方法,他们通常拥有不止一种调用方 法。如下,我定义了两个字符串,__add__的+的效果是相同的。这里有一个内置方法很特殊:__init__,它是类中的构造方法,会在调用其所在类的时候自动执行。
二、整型(int)
整型类:
1
2
3
|
dir
(
int
)
[
'__abs__'
,
'__add__'
,
'__and__'
,
'__bool__'
,
'__ceil__'
,
'__class__'
,
'__delattr__'
,
'__dir__'
,
'__divmod__'
,
'__doc__'
,
'__eq__'
,
'__float__'
,
'__floor__'
,
'__floordiv__'
,
'__format__'
,
'__ge__'
,
'__getattribute__'
,
'__getnewargs__'
,
'__gt__'
,
'__hash__'
,
'__index__'
,
'__init__'
,
'__int__'
,
'__invert__'
,
'__le__'
,
'__lshift__'
,
'__lt__'
,
'__mod__'
,
'__mul__'
,
'__ne__'
,
'__neg__'
,
'__new__'
,
'__or__'
,
'__pos__'
,
'__pow__'
,
'__radd__'
,
'__rand__'
,
'__rdivmod__'
,
'__reduce__'
,
'__reduce_ex__'
,
'__repr__'
,
'__rfloordiv__'
,
'__rlshift__'
,
'__rmod__'
,
'__rmul__'
,
'__ror__'
,
'__round__'
,
'__rpow__'
,
'__rrshift__'
,
'__rshift__'
,
'__rsub__'
,
'__rtruediv__'
,
'__rxor__'
,
'__setattr__'
,
'__sizeof__'
,
'__str__'
,
'__sub__'
,
'__subclasshook__'
,
'__truediv__'
,
'__trunc__'
,
'__xor__'
,
'bit_length'
,
'conjugate'
,
'denominator'
,
'from_bytes'
,
'imag'
,
'numerator'
,
'real'
,
'to_bytes'
]
|
整型的一些方法示例:
add:求和
1
2
3
4
5
|
>>> n2
=
2
>>> n1
+
n2
3
>>> n1.__add__(n2)
3
|
abs 求绝对值
1
2
3
4
5
|
>>> n1
=
-
8
>>> n1.__abs__()返回绝对值
8
>>>
abs
(
-
9
)
9
|
int:整型转换
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
>>> i
=
10
>>> i
=
int
(
10
)
>>> i
10
>>> i
=
int
(
"10"
,base
=
2
)
>>> i
2
>>> i
=
int
(
"11"
,base
=
2
) (
2
代表二进制)
>>> i
3
>>> i
=
int
(
"F"
,base
=
16
)
>>> i
15
|
cmp:两个数比较
1
2
3
4
5
6
7
8
9
10
|
>>> age
=
20
>>> age.__cmp__(
18
) 比较两个数大小
1
>>> age.__cmp__(
22
)
-
1
>>>
cmp
(
18
,
20
)
-
1
>>>
cmp
(
22
,
20
)
1
|
coerce:商和余数,强制生成一个元组
1
2
3
|
>>> i1
=
10
>>> i1.__coerce__(
2
)
(
10
,
2
) (强制生成一个元组)
|
divmod:分页,相除,得到商和余数组成的元组
1
2
3
|
>>> a
=
98
>>> a.__divmod__(
10
)
(
9
,
8
)
#相除,得到商和余数组成的数组,这个一定要会
|
float:转换为浮点类型
1
2
3
4
5
6
|
>>>
type
(a)
<
type
'int'
>
>>>
float
(a) 转换为浮点类型
98.0
>>> a.__float__()
98.0
|
int:转换为整型
1
2
3
4
5
6
|
>>> a
=
"2"
>>>
type
(a)
<
type
'str'
>
>>> a
=
int
(a)
>>>
type
(a)
<
type
'int'
>
|
三、长整型(long)
四、浮点型(float)
浮点类:
1
2
3
|
dir
(
float
)
[
'__abs__'
,
'__add__'
,
'__bool__'
,
'__class__'
,
'__delattr__'
,
'__dir__'
,
'__divmod__'
,
'__doc__'
,
'__eq__'
,
'__float__'
,
'__floordiv__'
,
'__format__'
,
'__ge__'
,
'__getattribute__'
,
'__getformat__'
,
'__getnewargs__'
,
'__gt__'
,
'__hash__'
,
'__init__'
,
'__int__'
,
'__le__'
,
'__lt__'
,
'__mod__'
,
'__mul__'
,
'__ne__'
,
'__neg__'
,
'__new__'
,
'__pos__'
,
'__pow__'
,
'__radd__'
,
'__rdivmod__'
,
'__reduce__'
,
'__reduce_ex__'
,
'__repr__'
,
'__rfloordiv__'
,
'__rmod__'
,
'__rmul__'
,
'__round__'
,
'__rpow__'
,
'__rsub__'
,
'__rtruediv__'
,
'__setattr__'
,
'__setformat__'
,
'__sizeof__'
,
'__str__'
,
'__sub__'
,
'__subclasshook__'
,
'__truediv__'
,
'__trunc__'
,
'as_integer_ratio'
,
'conjugate'
,
'fromhex'
,
'hex'
,
'imag'
,
'is_integer'
,
'real'
]
|
我们在创建对象的时候,python也会很聪明的识别出float类型,在计算的时候也是这样,不管表达式中有多少整形多少浮点型,只要存在浮点型,那么所有计算都按照浮点型计算,得出的结果也会是float类型。其余方法和整形并没有太大差别,在这里也不做详细总结了。
字符类:
1
2
3
|
dir
(
str
)
[
'__add__'
,
'__class__'
,
'__contains__'
,
'__delattr__'
,
'__dir__'
,
'__doc__'
,
'__eq__'
,
'__format__'
,
'__ge__'
,
'__getattribute__'
,
'__getitem__'
,
'__getnewargs__'
,
'__gt__'
,
'__hash__'
,
'__init__'
,
'__iter__'
,
'__le__'
,
'__len__'
,
'__lt__'
,
'__mod__'
,
'__mul__'
,
'__ne__'
,
'__new__'
,
'__reduce__'
,
'__reduce_ex__'
,
'__repr__'
,
'__rmod__'
,
'__rmul__'
,
'__setattr__'
,
'__sizeof__'
,
'__str__'
,
'__subclasshook__'
,
'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'
]
|
字符串的一些方法示例:
str:转换成str类型:
1
|
>>> s
=
str
(
"abc"
)
|
capitalize:将首字母大写
1
2
3
|
>>> name
=
'bruce'
>>> name.capitalize()
'Bruce'
|
center/ljust/rjst:固定字符串长度,居中/居左/居右 ,下面是使用示例,当然没有正常人会上来就这么用,一般用在打印列表和字典的时候整理格式
1
2
3
4
5
6
|
>>> str1.ljust(
20
,)
#设置格式左对齐,其余部分默认情况下,以空格填充
'hello,bruce*********' '
>>> str1.center(
20
,
'*'
)
#设置格式左对齐,剩余部分已“*”填充
'****hello,bruce*****'
>>> str1.rjust(
20
,
'*'
)
#设置格式左对齐,剩余部分已“&”填充
'*********hello,bruce'
|
count:子序列个数,用来统计一个字符串中包含指定子序列的个数。这个子序列可以是一个字符,也可以是多个字符
1
2
3
4
5
|
>>> str1
=
'hello,I'
m a good man'
>>> str1.count(
'a'
)
2
>>> str1.count(
'an'
)
1
|
encode/decode:编码/解码,如下左图,各个编码之间是不能直接转换的,计算机内存中默认存储的编码格式是unicode,所以当我们需要将编码在utf8和gbk之间转换的时候,都需要和unicode做操作。
我的终端编码是gbk编码的,当我创建一个string = '景'时,string就被存储成gbk格式。此时我想把gbk格式转换成utf8格式,就要先将原gbk格式的string转换成unicode格式,然后再将unicode转换成utf8格式。如下右图,老师说,把这个字整乱码了我们的目的就达到了
endswith:是否以...(子串)结尾。这里的子串依然可以是一个或多个字符。
1
2
3
|
str1
=
'
>>> str1.endswith(
'man'
)
True
|
expandtabs:将tab转换成空格,默认一个tab转换成8个空格。当然这里也可以自行指定转换成多少个空格
1
2
3
4
5
|
>>> name
=
' bruce'
>>> name.expandtabs()
' bruce'
>>> name.expandtabs(
20
)
' bruce'
|
find:返回字符串中第一个子序列的下标。
rfind:和find用法一样,只是它是从右向左查找
index:和find的左右一致,只是find找不到的时候会返回-1,而index找不到的时候会报错
值得注意的是,当我们在一个字符串中查找某一个子序列的时候,如果这个字符串中含有多个子序列,只会返回第一个找到的下标,不会返回其他的。
1
2
3
4
5
6
7
8
9
10
11
12
13
|
str1
=
"hello,my,world"
>>> str1.find(
"m"
)
6
>>> str1.find(
"y"
)
7
>>> str1.find(
"g"
)
-
1
>>> str1.index(
"y"
)
7
>>> str1.index(
"g"
)
Traceback (most recent call last):
File
"<stdin>"
, line
1
,
in
<module>
ValueError: substring
not
found
|
format:各种格式化,动态参数。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
>>> name
=
'I am {
0
},age {
1
}’
>>> name
'I am {0},age {1}'
传入字符串:
>>> name.
format
(
'bruce'
,18
) ""
" 字符串格式化 “”"
'I am bruce,age 18'
>>> name
=
'I am {ss},age {dd}'
>>> name.
format
(ss
=
"bruce"
,dd
=18
)
'I am bruce,age 18
’
传入一个列表:
>>> li
=
["bruce"
,18
]
>>> name
=
'I am {
0
},age {
1
}’
>>> name.
format
(
*
li) (传列表加一个“
*
”)
'I am bruce
,age 18
’
传入一个字典:
name
=
'I am {ss},age {dd}’
>>> dic
=
{
'ss'
:"bruce"
,
'dd'
:18
}
>>> name.
format
(
*
*
dic)
'I am bruce
,age 18
’
|
isalnum/isalpha/isdigit/isspace/islower/istitle/isupper:是否是字母或数字/是否字母/是否数字/是否空格/是否小写/是否标题/是否全大写,总之都是一些判断的方法,返回的不是True就是False。。。
isalnum:是否是字母和数字
1
2
3
4
5
6
7
8
9
10
|
>>> a
‘howareyou’
>>> a.isalnum()
True
>>> a
=
"__"
>>> a.isalnum()
False
>>> a
=
'123'
>>> a.isalnum()
True
|
isalpha:是否是字母
1
2
3
4
5
6
7
|
>>> a
'123'
>>> a.isalpha()
False
>>> a
=
'allen'
>>> a.isalpha()
True
|
isdigit:是否是数字
1
2
3
4
5
6
7
|
>>> a
=
'123'
>>> a.isdigit()
True
>>> a
=
'allen'
>>> a.isdigit()
False
|
islower:是否小写
1
2
3
4
5
6
|
>>> a
=
'allen'
>>> a.islower()
True
>>> a
=
'Allen'
>>> a.islower()
False
|
istitle:是否是标题
1
2
3
4
5
6
|
>>> name
=
"Hello Allen"
>>> name.istitle()
True
>>> name
=
"Hello allen"
>>> name.istitle()
False
|
partition/split:这两个方法都用来分割。
partition会将指定的子串串提取并将子串两侧内容分割,只匹配一次,并返回元祖;
split会根据指定子串,将整个字符串所有匹配的子串匹配到并剔除,将其他内容分割,返回数组。
1
2
3
4
5
|
>>> food
=
'apple,banana,chocolate'
>>> food.split(
','
)
[
'apple'
,
'banana'
,
'chocolate'
]
>>> food.partition(
','
)
(
'apple'
,
','
,
'banana,chocolate'
)
|
replace:替换。会替换字符串中所有符合条件的子串。
1
2
3
|
str1
=
"one two one two"
>>> str1.replace(
'one'
,
'five'
)
five two five two
|
swapcase:大写变小写,小写变大写
1
2
3
|
str1 =
"one two one two"
str1.swapcase()
ONE TWO ONE TWO
|
translate:替换,删除字符串。这个方法的使用比较麻烦,在使用前需要引入string类,并调用其中的maketrans方法建立映射关系。这样,在translate方法中,加入映射参数,就可以看到效果了。如下‘aeiou’分别和‘12345’建立了映射关系,于是在最后,aeiou都被12345相应的替换掉了,translate第二个参数是删除,它删除了所有的‘.’
1
2
3
4
5
6
7
8
|
>>> in_tab
=
'aeiou'
>>> out_tab
=
'12345'
>>>
import
string
>>> transtab
=
string.maketrans(in_tab,out_tab)
>>>
str
=
'this is a translate example...wow!'
>>> str1
=
'this is a translate example...wow!'
>>>
print
str1.translate(transtab,
'..'
)
th3s
3s
1
tr1nsl1t2
2x1mpl2w4w
!
|
六、列表(list)
列表类:
1
2
|
dir
(
list
)
[
'__add__'
,
'__class__'
,
'__contains__'
,
'__delattr__'
,
'__delitem__'
,
'__dir__'
,
'__doc__'
,
'__eq__'
,
'__format__'
,
'__ge__'
,
'__getattribute__'
,
'__getitem__'
,
'__gt__'
,
'__hash__'
,
'__iadd__'
,
'__imul__'
,
'__init__'
,
'__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'
]
|
列表的一些方法示例:
append:向列表中添加项
insert:在列表的指定位置加入值
extend:列表的扩展;那么列表可以自己扩展自己么???当然是可以的啦!
1
2
3
4
5
6
7
8
9
10
11
12
|
>>>
>>> a
=
[
1
,
2
,
3
,
4
]
>>> a.append(
5
)
>>> a
[
1
,
2
,
3
,
4
,
5
]
>>> b
=
[
6
,
7
]
>>> a.extend(b)
>>> a
[
1
,
2
,
3
,
4
,
5
,
6
,
7
]
>>> a.insert(
2
,
0
)
>>> a
[
1
,
2
,
0
,
3
,
4
,
5
,
6
,
7
]
|
index:返回列表中第一个匹配项的下标
__contain__:查看列表中是否包含某一项
count:查看列表中某一项出现的次数
1
2
3
4
5
6
7
8
9
10
|
>>> a
[
1
,
2
,
0
,
3
,
4
,
5
,
6
,
7
]
>>> a.index(
0
)
2
>>> a.__contains__(
7
)
True
>>> a.__contains__(
8
)
False
>>> a.count(
5
)
1
|
pop:删除并返回指定下标的值,默认为列表的最后一个值
remove:删除列表中与指定值匹配的第一个值
__delitem__:删除指定下标的值
__delslice__:删除指定下标区域内的所有值,下标向下包含
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
>>> a
[
1
,
2
,
0
,
3
,
4
,
5
,
6
,
7
]
>>> a.pop()
7
>>> a
[
1
,
2
,
0
,
3
,
4
,
5
,
6
]
>>> a.pop(
2
)
0
>>> a
[
1
,
2
,
3
,
4
,
5
,
6
]
>>> a.remove(
2
)
>>> a
[
1
,
3
,
4
,
5
,
6
]
>>> a.__delitem__(
0
)
>>> a
[
3
,
4
,
5
,
6
]
>>> a.__delslice__(
0
,
2
)
>>> a
[
5
,
6
]
|
reverse:列表反转,这个反转并没有什么编码顺序,就是单纯的把原来的列表从头到尾调转过来而已。。。
sort:排序,数字、字符串按照ASCII,中文按照unicode从小到大排序。
1
2
3
4
5
6
7
|
>>> a
=
[
5
,
4
,
6
,
8
,
2
,
6
,
9
]
>>> a.sort()
>>> a
[
2
,
4
,
5
,
6
,
6
,
8
,
9
]
>>> a.reverse()
>>> a
[
9
,
8
,
6
,
6
,
5
,
4
,
2
]
|
元组类:
1
2
|
dir
(
tuple
)
[
'__add__'
,
'__class__'
,
'__contains__'
,
'__delattr__'
,
'__dir__'
,
'__doc__'
,
'__eq__'
,
'__format__'
,
'__ge__'
,
'__getattribute__'
,
'__getitem__'
,
'__getnewargs__'
,
'__gt__'
,
'__hash__'
,
'__init__'
,
'__iter__'
,
'__le__'
,
'__len__'
,
'__lt__'
,
'__mul__'
,
'__ne__'
,
'__new__'
,
'__reduce__'
,
'__reduce_ex__'
,
'__repr__'
,
'__rmul__'
,
'__setattr__'
,
'__sizeof__'
,
'__str__'
,
'__subclasshook__'
,
'count'
,
'index'
]
|
八、字典(dict)
字典类:
1
2
|
dir
(
dict
)
[
'__class__'
,
'__contains__'
,
'__delattr__'
,
'__delitem__'
,
'__dir__'
,
'__doc__'
,
'__eq__'
,
'__format__'
,
'__ge__'
,
'__getattribute__'
,
'__getitem__'
,
'__gt__'
,
'__hash__'
,
'__init__'
,
'__iter__'
,
'__le__'
,
'__len__'
,
'__lt__'
,
'__ne__'
,
'__new__'
,
'__reduce__'
,
'__reduce_ex__'
,
'__repr__'
,
'__setattr__'
,
'__setitem__'
,
'__sizeof__'
,
'__str__'
,
'__subclasshook__'
,
'clear'
,
'copy'
,
'fromkeys'
,
'get'
,
'items'
,
'keys'
,
'pop'
,
'popitem'
,
'setdefault'
,
'update'
,
'values'
]
|
字典的一些方法示例:
字典取值:
1
2
3
4
5
|
>>> dic
=
{
'allen'
:
1234
,
'yyh'
:
123
}
>>> dic
{
'allen'
:
1234
,
'yyh'
:
123
}
>>> dic[
'allen'
]
1234
|
get:get方法得到value,不存在返回None
1
2
3
4
5
6
7
|
>>> dic.get(
'kk'
)
>>>
print
dic.get('kk’)
None
>>>
print
dic.get(
'kk'
,'OK’)
#写上OK,则返回OK
OK
>>>
print
dic.get(
'kk'
,
'TT'
)
TT
|
clear:清空字典
1
2
3
|
dic
=
{
"aaa"
:
123
,
"bbb"
:
321
}
dic.clear()
None
|
pop:根据指定的key删除一组数据
popitem:随机的删除一组数据
1
2
3
4
5
6
7
8
9
10
11
|
dic
=
{
"aaa"
:
123
,
"bbb"
:
321
,
"ccc"
:
333
}
dic.popitem()
(
'aaa'
,
123
)
dic
{
'bbb'
:
321
,
'ccc'
:
333
}
dic
=
{
"aaa"
:
123
,
"bbb"
:
321
,
"ccc"
:
333
}
dic.pop(
"aaa"
)
123
dic
{
'bbb'
:
321
,
'ccc'
:
333
}
|
setdefault:dic.setdefault[key1],key1存在,则返回value1,不存在,则自动创建value = 'None'
1
2
3
4
5
6
7
|
dic
=
{
"aaa"
:
123
,
"bbb"
:
321
,
"ccc"
:
333
}
dic.setdefault(
"aaa"
)
123
dic.setdefault(
"ddd"
)
None
dic
{
'aaa'
:
123
,
'bbb'
:
321
,
'ddd'
:
None
,
'ccc'
:
333
}
|
update:dict1.update(dict2),判断dict2中的每一个key在dict1中是否存在,存在:就将dict1中的value更新成dict2中的,不存在:将key和value都复制过去
1
2
3
4
5
|
dic1
=
{
"aaa"
:
None
,
"bbb"
:
321
,
"ccc"
:
333
}
dic2
=
{
"aaa"
:
123
,
"bbb"
:
222
,
"ccc"
:
555
}
dic1.update(dic2)
dic1
{
'ccc'
:
555
,
'aaa'
:
123
,
'bbb'
:
222
}
|
fromkeys:可以通过list创建一个字典
1
2
3
4
5
6
7
8
|
seq
=
(
'name'
,
'age'
,
'sex'
)
dict
=
dict
.fromkeys(seq)
print
(
"New Dictionary : %s"
%
str
(
dict
))
New Dictionary : {
'age'
:
None
,
'sex'
:
None
,
'name'
:
None
}
dict
=
dict
.fromkeys(seq,
10
)
print
(
"New Dictionary : %s"
%
str
(
dict
))
New Dictionary : {
'age'
:
10
,
'sex'
:
10
,
'name'
:
10
}
|
copy:浅拷贝,只是第一层独立了,第二层及以下还是跟着母字典一样
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
dic1
=
{
'name'
:
'sky'
,
'otherInfo'
: {
'hobby'
: [
'read'
,
'sport'
]},
'gender'
:
'man'
,
'age'
:
18
}
# print(dic1)
dic2
=
dic1.copy()
dic1[
"name"
]
=
"bruce"
print
(dic1)
{
'age'
:
18
,
'gender'
:
'man'
,
'name'
:
'bruce'
,
'otherInfo'
: {
'hobby'
: [
'read'
,
'sport'
]}}
print
(dic2)
{
'age'
:
18
,
'gender'
:
'man'
,
'name'
:
'sky'
,
'otherInfo'
: {
'hobby'
: [
'read'
,
'sport'
]}}
#dic2这一层没有随着dic1一起更改
dic2
=
dic1.copy()
dic1[
"otherInfo"
][
0
]
=
"bruce"
print
(dic1)
print
(dic2)
{
'name'
:
'sky'
,
'otherInfo'
: {
'hobby'
: [
'read'
,
'sport'
],
0
:
'bruce'
},
'gender'
:
'man'
,
'age'
:
18
}
#这次dic1和dic2的输出一样了,因为copy只是独立复制第一层,再深的就不管了。
|