一、类和对象
对于Python,一切事物都是对象,对象基于类创建

学会查看帮助

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类型。其余方法和整形并没有太大差别,在这里也不做详细总结了。


五、字符串(str)

字符类:

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 = 'hello,I'm a good man'
>>> 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',)  """ 字符串格式化 “”"
'I am bruce,age 18'
>>> name = 'I am {ss},age {dd}'
>>> name.format(ss="bruce",dd=)
'I am bruce,age
 
传入一个列表:
 
>>> li = ["]
>>> name = 'I am {0},age {1}’
>>> name.format(*li)  (传列表加一个“*”)
'I am
 
传入一个字典:
 
name = 'I am {ss},age {dd}’
>>> dic = {'ss':"}
>>> name.format(**dic)
'I am

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]
七、元组(tuple)

元组类:

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只是独立复制第一层,再深的就不管了。

入门拾遗 day2的更多相关文章

  1. 算法入门笔记------------Day2

    1.开灯问题 有n盏灯,编号为1-n,第一个人把所有灯打开,第二个按下所有编号为2的倍数的开关(这些灯都被关掉),第三个人按下所有编号为3的倍数的开关,依次类推,一共有k个人,问最后有哪些灯开着?输入 ...

  2. 快上车,react 入门拾遗

    最近朋友圈和微博都刷了一波杰伦的回忆杀–说好不哭,想想都9012了,在学习react如火如荼的路上,也不妨停下脚步来总结总结,朝花夕拾一下. 为了便于阐述,我们还是来段小明和禅师的故事吧. 小明在学习 ...

  3. Mysql入门学习day2随笔2

    事务 什么是事务 要么都成功,要么都失败 事务原则 原子性:针对一个事务,两个步骤一起成功或一起失败 一致性:最终一致性,例如A.B之间的转账,无论两个账户如何操作,两账户的总价值不会变 隔离性:针对 ...

  4. Python之路【第二篇】:Python基础

    参考链接:老师 BLOG : http://www.cnblogs.com/wupeiqi/articles/4906230.html 入门拾遗 一.作用域 只要变量在内存中就能被调用!但是(函数的栈 ...

  5. Bigger-Mai 养成计划,Python基础巩固二

    模块初识1.标准库2.第三方库import sys sys.path #自己的本文件名不可为sys.py#输出模块存储的环境变量sys.argv #打印脚本的相对路径sys.argv[2] #取第二个 ...

  6. 进击python第二篇:初识

    入门拾遗 模块 模块用以导入python增强其功能扩展 1.使用 import [模块名] 导入,应用方式:模块. 函数,例: >>> import math >>> ...

  7. CentOS 8.4安装Docker

    前言: Docker 是一个用于开发.传送和运行应用程序的开放平台.Docker 使您能够将应用程序与基础设施分开,以便您可以快速交付软件.使用 Docker,您可以像管理应用程序一样管理基础设施.通 ...

  8. Ubuntu 20.04安装Docker

    Docker学习系列文章 入门必备:十本你不容错过的Docker入门到精通书籍推荐 day1.全面的Docker快速入门教程 day2.CentOS 8.4安装Docker day3.Windows1 ...

  9. 【JAVA零基础入门系列】Day2 Java集成开发环境IDEA

    开发环境搭建好之后,还需要一个集成开发环境也就是IDE来进行编程.这里推荐的IDE是IDEA,那个老掉牙的Eclipse还是先放一边吧,(手动滑稽). IDEA的下载地址:http://www.jet ...

随机推荐

  1. JQ实现小火箭效果

    点击返回顶部以动画方式返回 $(function(){         $(window).scroll(function(){             //当滚动距离超过50后,显示按钮:      ...

  2. 什么是ORM,以及在php上的使用?

    ORM:object relation mapping,即对象关系映射,简单的说就是对象模型和关系模型的一种映射.为什么要有这么一个映射?很简单,因为现在的开发语言基本都是oop的,但是传统的数据库却 ...

  3. Struts2包含哪些标签?

    Struts2包含哪些标签? 解答: A: <s:a href=”"></s:a>—–超链接,类似于html里的<a></a> <s:a ...

  4. ISP图像调试工程师

    汉邦高科 任职要求: 1. 电子工程.图像与信号处理.计算机等相关专业,本科及以上学历: 2. 在数字图像处理.视频压缩等方面具有扎实的理论背景知识: 3. 熟悉Sony.Panasonic.Apti ...

  5. 【BZOJ】1596: [Usaco2008 Jan]电话网络(树形dp+特殊的技巧)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1596 一开始交了个貌似正确的dp,wa了. 我只考虑了儿子覆盖的情况,没有考虑父亲QAQ 那么我们要 ...

  6. 【Ubuntu 16.04.3 LTS】apt-get 安装MariaDB

    一.Mysql背景信息 Mysql在互联网早期就流行了,追求速度.简单.坚持开源.几乎支持所有操作系统.完全支持多用户.多线程,支持海量数据存储,采用MyISAM.InnoDB两大存储引擎优势互补.但 ...

  7. util.inherits

    util.inherits util.inherits(constructor, superConstructor)是一个实现对象间原型继承 的函数. JavaScript 的面向对象特性是基于原型的 ...

  8. Spring Mvc 上传文件Demo 实例

    返得利购物. 淘宝.京东500家商城合作,包括全面的商城返利网.注冊就送5元,购物就有返利.随时提现. 同学们,新一轮的返利大潮正在慢慢靠近,让购物都认为自己在赚钱.购物,机票.游戏.酒店旅游,地方特 ...

  9. VR应用开发遍地走的日子还有多远

    从上世纪60年代美国计算机科学家Ivan Sutherland发明的第一款真正意义上的虚拟现实头盔,到Facebook以20亿美元收购"虚拟现实之眼"Oculus Rift,大批厂 ...

  10. Qt 配置文件QSettings读取以及中文问题

    QSettings settings("xxxx.ini",QSettings::IniFormat);settings.setIniCodec(QTextCodec::codec ...