在回顾Python基础的时候,遇到最大的问题就是内容不少,而个人目的是回顾本身以前学习的内容,进行相应的总结,因此我就不玩基础了,不少在我实际生活中使用的东西,我会在文章中提一下。而且我本身会根据这些内容进行相应的补充与扩展。
文章定位:不是科普文,是本身对于本身学习的总结。python
目前全部的文章思想格式都是:知识+情感。 知识:对于全部的知识点的描述。力求不含任何的自我感情色彩。 情感:用我本身的方式,解读知识点。力求通俗易懂,完美透析知识。
正文的主要内容是:Python的全部数据类型,包含None,布尔,数字,字符串,元祖,字典,集合,有序字典,冰冻集合。git
1.首先,须要知道Python这个语言是怎么本身区分数据类型的,使用的是:type() 方法数据库
s = 'rongming' print(type(s)) # <class 'str'>
None表示的就是Python中的None。做为Python中的一种数据类型哈,通常人估计不知道,记一下~~api
a = None print(type(a)) # <class 'NoneType'>
布尔类型:True/False
当Python进行比较远算的时候,就会获得布尔类型的结果。app
In [1]: type(None) Out[1]: NoneType In [2]: a = 10 In [3]: b = 8 In [4]: c = a > b In [5]: c Out[5]: True In [6]: print(type(c)) <class 'bool'>
数字类型: int/float(整型/浮点型)
整型就是整数,浮点型就是小数。
注意:没有long 型ide
In [7]: num = 666 In [8]: num1 = 1.666 In [9]: type(num) Out[9]: int In [10]: type(num1) Out[10]: float
1.字符串类型:str,属于不可变数据类型。函数
2.字符串是字符的集合,而且须要使用单引号和双引号包含着。工具
3.字符串的操做函数
字符串的操做函数源码以下:学习
In [12]: dir(s) Out[12]: [ 'capitalize', 'casefold', 'center', 'count', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'format_map', 'index', 'isalnum', 'isalpha', 'isascii', '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']
4.经常使用的字符串操做函数
1)切片操做,基于字符串中的每个字符进行切片
2)字符串的转义,使用两个 \
3)center() 能够生成标题,左右包含指定符号
4)count() 字符串数据类型中的字符数
5)encode 编码,编码转换使用
6)decode 解码,编码转换使用
7) format() 字符串的格式化,适合在格式化的时候同一变量多处出现
8) isdigit() 判断字符串是否是数字
9)islower/isupper 表示字母是否是小写/大写
10)join 进行字符串的拼接,很经常使用
11)lstrip 去除字符串左边空格
12)strip 去除字符串两边空格
13)rstrip去除字符串右边空格
14)replace进行字符串的替换
15)split 进行字符串的切分
16)rsplit 进行字符串的切分
17)startswith 判断是否是以什么开头
18)lower 统一为小写
19)upper 统一为大写区块链
1.元祖类型: tuple,属于不可变数据类型, ()
2.经常使用函数:
index() 返回对应元素的下标
count() 统计元祖的个数
3.元祖的可修改
1)注意:虽然元祖属于不可变数据类型,可是依然能够修改元祖里面的值
2)注意:在底层,不可变数据类型只是当前的表示是不可修改的,可是嵌套可变数据类型就能够修改,基于内部存放的是内存地址原理。
In [26]: tu = (1, 2, 3, [4, 5, 6]) In [27]: tu Out[27]: (1, 2, 3, [4, 5, 6]) In [28]: tu[3][0] = 'rongming' In [29]: tu Out[29]: (1, 2, 3, ['rongming', 5, 6])
1.列表数据类型: list ,属于可变数据类型。使用[].
2.列表类型经常使用函数源码:
In [32]: dir(d) Out[32]: [ 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']
3.经常使用的函数
1)append() 添加元素到列表的最后
2)pop() 弹出最后一个元素(为空报错)
3)extend() 将两个列表合并
4)切片[ start: end : step]
5)len 看列表的长度
6)for循环遍历
7)enumerate() 进行列表的遍历
4)列表生成式
In [33]: a = [i for i in range(10)] In [34]: a Out[34]: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
1.字典类型:** dict,, 属于可变数据类型,使用 {} 表示。**
2.字典的结构: {key: value, key: value, key: value, .....}
注意: key是哈希值,因此字典的查询速度快
补充知识点:hash知识,见hash。
3.字典常见函数
'clear', 'copy', 'fromkeys', 'get', # 得到字典中键对应的值 'items', 'keys', 'pop', 'popitem', 'setdefault', # 返回已经存在值,没有就修改 'update', # 覆盖现象 'values'
4.字典生成式
In [5]: m = {i:i*3 for i in range(8)} In [6]: m Out[6]: {0: 0, 1: 3, 2: 6, 3: 9, 4: 12, 5: 15, 6: 18, 7: 21}
5.深浅拷贝(两层与多层的区别)
1)注意:python底层对于数据的存储是使用的内存地址进行映射。
2)全部的可变数据类型,都是由不可变数据类型拼凑的
3)全部的不可变数据类型,都是对于内部的单位总体是不可变的。
4)可使用copy工具包进行数据的deepcopy,实现数据的彻底分离。若是只是简单的赋值与copy只能够解决一层嵌套关系。
In [8]: d = {'a':[1, 2, 3], 'b': [6, 7, 8]} In [9]: d Out[9]: {'a': [1, 2, 3], 'b': [6, 7, 8]} In [10]: f = d In [11]: f['a'][0] = 'rongming' In [12]: d Out[12]: {'a': ['rongming', 2, 3], 'b': [6, 7, 8]} In [13]: f Out[13]: {'a': ['rongming', 2, 3], 'b': [6, 7, 8]}
1.结合数据类型:** set, 属于可变数据类型,使用{}表示。**
2.集合自然去重,因此集合具备无序的性质与不重复的性质。
3.经常使用的函数
'add', 'clear', 'copy', 'difference', # - 'difference_update', 'discard', 'intersection', # & 'intersection_update', 'isdisjoint', 'issubset', 'issuperset', 'pop', # 随机pop出一个元素 'remove', 'symmetric_difference', 'symmetric_difference_update', 'union', # | 'update'
1.注意:冰冻集合, frozenset属于不可变数据类型。因此不能进行修改
In [21]: f = {1, 2, 3, 4, 5} In [22]: d = frozenset(f) In [23]: d Out[23]: frozenset({1, 2, 3, 4, 5})
2.可使用的函数
'copy', 'difference', 'intersection', 'isdisjoint', 'issubset', 'issuperset', 'symmetric_difference', 'union'
1.有序字典:OrderedDict,保证了字典中的key的有序,在大量数据的时候,可使用这个办法进行数据的快速查找(二分法了解一下~~)。
In [25]: from collections import OrderedDict In [26]: d = OrderedDict({'name':'rongming', 'age':20}) In [27]: d Out[27]: OrderedDict([('name', 'rongming'), ('age', 20)])
2.经常使用函数
'clear', 'copy', 'fromkeys', 'get', 'items', 'keys', 'move_to_end', 'pop', 'popitem', 'setdefault', 'update', 'values'
1)hash散列值具备不可逆与计算速度快的特色。
2)python 实现hash
注意:python中 重启以后hash的值不同
>>> hash('rongming') 3985893259886982844 >>> hash('rongming') 3985893259886982844
3)hash 的使用
MD5(不要使用同一个密码注册多个帐号,每个数据库存储的密码不必定是密文)
数字签名(公钥,私钥)
区块链
本文基本上涵盖了全部的Python数据类型,量很大,算是本身对于本身以前学习的一个浓缩。
当如今会看当时本身学习的内容的时候,万分感慨,真的是那句话:’终究仍是本身感动了本身啊!‘