一、类和对象
对于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. win 7和虚拟机之间ping

    虚拟机的网卡和真实机的IP设为同一网段.用ping检查是否通,通了后用工具连接ssh看能否登录!如果成功的话winscp应该就能用了.如果不同就要就检查防火墙看是否开放了22端口,没有的话就要开放一下 ...

  2. C. Magic Five

    C. Magic Five Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 524288/262144K (Java/Other) Tot ...

  3. datatable.js 服务端分页+fixColumns列固定

    前言 记得还是15年的时候,工作需要,独自写后台管理系统..记得那时候,最让我头疼的不是后台逻辑,而是数据的列表展示. 列很多的时候,页面显示问题;分页样式问题;表格样式问题;数据加载...很多细节的 ...

  4. easyui- grid前台分页

    function pagerFilter(data) { if (typeof data.length == 'number' && typeof data.splice == 'fu ...

  5. Using Fast Weights to Attend to the Recent Past

    Ba, Jimmy, et al. "Using Fast Weights to Attend to the Recent Past." Advances In Neural In ...

  6. 第二百一十九节,jQuery EasyUI,DateTimeBox(日期时间输入框)组件

    jQuery EasyUI,DateTimeBox(日期时间输入框)组件 学习要点: 1.加载方式 2.属性列表 3.方法列表 本节课重点了解 EasyUI 中 DateTimeBox(日期时间输入框 ...

  7. “SYSTEM.DATA.SQLCLIENT.SQLCONNECTION”的类型初始值设定项引发异常---解决方案

    “System.Data.SqlClient.SqlConnection”的类型初始值设定项引发异常 问题出在了 .net 的C:\WINDOWS\Microsoft.NET\Framework\v2 ...

  8. .NET中二进制图片的存储与读取

    判断HttpContext是否为空: string configPath = "img/defaultPhoto.png"; if (HttpContext.Current != ...

  9. MFC多国语言——资源副本

    此随笔主要参考了http://www.cnblogs.com/xianyunhe/archive/2011/09/02/2163842.html 为软件提供多国语言的支持的具体实现方法有很多,但基本原 ...

  10. matlab中图片数据类型转换uint8与double

    matlab中处理图像像素点数据: img1=double(imread('lenna.bmp')); matlab中imshow图片,要先转换成uint8: subplot(1,2,1),imsho ...