开发|浅谈python数据类型

在回顾Python基础的时候,遇到最大的问题就是内容很多,而我的目的是回顾自己之前学习的内容,进行相应的总结,所以我就不玩基础了,很多在我实际生活中使用的东西,我会在文章中提一下。并且我自己会根据这些内容进行相应的补充与扩展。

文章定位:不是科普文,是自己对于自己学习的总结。

前言

  1. 目前所有的文章思想格式都是:知识+情感。
  2. 知识:对于所有的知识点的描述。力求不含任何的自我感情色彩。
  3. 情感:用我自己的方式,解读知识点。力求通俗易懂,完美透析知识。

正文

正文的主要内容是:Python的所有数据类型,包含None,布尔,数字,字符串,元祖,字典,集合,有序字典,冰冻集合。

基础知识

1.首先,需要知道Python这个语言是怎么自己区分数据类型的,使用的是:type() 方法

  1. s = 'rongming'
  2. print(type(s)) # <class 'str'>

None类型

None表示的就是Python中的None。作为Python中的一种数据类型哈,一般人估计不知道,记一下~~

  1. a = None
  2. print(type(a)) # <class 'NoneType'>

布尔类型

布尔类型:True/False

当Python进行比较远算的时候,就会得到布尔类型的结果。

  1. In [1]: type(None)
  2. Out[1]: NoneType
  3. In [2]: a = 10
  4. In [3]: b = 8
  5. In [4]: c = a > b
  6. In [5]: c
  7. Out[5]: True
  8. In [6]: print(type(c))
  9. <class 'bool'>

数字类型

数字类型: int/float(整型/浮点型)

整型就是整数,浮点型就是小数。

注意:没有long 型

  1. In [7]: num = 666
  2. In [8]: num1 = 1.666
  3. In [9]: type(num)
  4. Out[9]: int
  5. In [10]: type(num1)
  6. Out[10]: float

字符串类型

1.字符串类型:str,属于不可变数据类型。

2.字符串是字符的集合,并且需要使用单引号和双引号包含着。

3.字符串的操作函数

字符串的操作函数源码如下:

  1. In [12]: dir(s)
  2. Out[12]:
  3. [ '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)注意:在底层,不可变数据类型只是当前的表示是不可修改的,但是嵌套可变数据类型就可以修改,基于内部存放的是内存地址原理。

  1. In [26]: tu = (1, 2, 3, [4, 5, 6])
  2. In [27]: tu
  3. Out[27]: (1, 2, 3, [4, 5, 6])
  4. In [28]: tu[3][0] = 'rongming'
  5. In [29]: tu
  6. Out[29]: (1, 2, 3, ['rongming', 5, 6])

列表类型

1.列表数据类型: list ,属于可变数据类型。使用[].

2.列表类型常用函数源码:

  1. In [32]: dir(d)
  2. Out[32]:
  3. [ '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)列表生成式

  1. In [33]: a = [i for i in range(10)]
  2. In [34]: a
  3. 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.字典常见函数

  1. 'clear',
  2. 'copy',
  3. 'fromkeys',
  4. 'get', # 获得字典中键对应的值
  5. 'items',
  6. 'keys',
  7. 'pop',
  8. 'popitem',
  9. 'setdefault', # 返回已经存在值,没有就修改
  10. 'update', # 覆盖现象
  11. 'values'

4.字典生成式

  1. In [5]: m = {i:i*3 for i in range(8)}
  2. In [6]: m
  3. 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只可以解决一层嵌套关系。

  1. In [8]: d = {'a':[1, 2, 3], 'b': [6, 7, 8]}
  2. In [9]: d
  3. Out[9]: {'a': [1, 2, 3], 'b': [6, 7, 8]}
  4. In [10]: f = d
  5. In [11]: f['a'][0] = 'rongming'
  6. In [12]: d
  7. Out[12]: {'a': ['rongming', 2, 3], 'b': [6, 7, 8]}
  8. In [13]: f
  9. Out[13]: {'a': ['rongming', 2, 3], 'b': [6, 7, 8]}

集合类型

1.结合数据类型:** set, 属于可变数据类型,使用{}表示。**

2.集合天然去重,所以集合具有无序的性质与不重复的性质。

3.常用的函数

  1. 'add',
  2. 'clear',
  3. 'copy',
  4. 'difference', # -
  5. 'difference_update',
  6. 'discard',
  7. 'intersection', # &
  8. 'intersection_update',
  9. 'isdisjoint',
  10. 'issubset',
  11. 'issuperset',
  12. 'pop', # 随机pop出一个元素
  13. 'remove',
  14. 'symmetric_difference',
  15. 'symmetric_difference_update',
  16. 'union', # |
  17. 'update'

冰冻集合

1.注意:冰冻集合, frozenset属于不可变数据类型。所以不能进行修改

  1. In [21]: f = {1, 2, 3, 4, 5}
  2. In [22]: d = frozenset(f)
  3. In [23]: d
  4. Out[23]: frozenset({1, 2, 3, 4, 5})

2.可以使用的函数

  1. 'copy',
  2. 'difference',
  3. 'intersection',
  4. 'isdisjoint',
  5. 'issubset',
  6. 'issuperset',
  7. 'symmetric_difference',
  8. 'union'

有序字典

1.有序字典:OrderedDict,保证了字典中的key的有序,在大量数据的时候,可以使用这个办法进行数据的快速查找(二分法了解一下~~)。

  1. In [25]: from collections import OrderedDict
  2. In [26]: d = OrderedDict({'name':'rongming', 'age':20})
  3. In [27]: d
  4. Out[27]: OrderedDict([('name', 'rongming'), ('age', 20)])

2.常用函数

  1. 'clear',
  2. 'copy',
  3. 'fromkeys',
  4. 'get',
  5. 'items',
  6. 'keys',
  7. 'move_to_end',
  8. 'pop',
  9. 'popitem',
  10. 'setdefault',
  11. 'update',
  12. 'values'

hash

1)hash散列值具有不可逆与计算速度快的特点。

2)python 实现hash

注意:python中 重启之后hash的值不一样

  1. >>> hash('rongming')
  2. 3985893259886982844
  3. >>> hash('rongming')
  4. 3985893259886982844

3)hash 的使用

MD5(不要使用同一个密码注册多个账号,每一个数据库存储的密码不一定是密文)

数字签名(公钥,私钥)

区块链

结束语

本文基本上涵盖了所有的Python数据类型,量很大,算是自己对于自己之前学习的一个浓缩。

当现在会看当时自己学习的内容的时候,万分感慨,真的是那句话:’终究还是自己感动了自己啊!‘

开发技术--浅谈python数据类型的更多相关文章

  1. 开发技术--浅谈Python函数

    开发|浅谈Python函数 函数在实际使用中有很多不一样的小九九,我将从最基础的函数内容,延伸出函数的高级用法.此文非科普片~~ 前言 目前所有的文章思想格式都是:知识+情感. 知识:对于所有的知识点 ...

  2. 开发技术--浅谈python基础知识

    开发|浅谈python基础知识 最近复习一些基础内容,故将Python的基础进行了总结.注意:这篇文章只列出来我觉得重点,并且需要记忆的知识. 前言 目前所有的文章思想格式都是:知识+情感. 知识:对 ...

  3. .net中对象序列化技术浅谈

    .net中对象序列化技术浅谈 2009-03-11 阅读2756评论2 序列化是将对象状态转换为可保持或传输的格式的过程.与序列化相对的是反序列化,它将流转换为对象.这两个过程结合起来,可以轻松地存储 ...

  4. GIS历史概述与WebGis应用开发技术浅解

    声明:本篇在李晓晖的<杂谈WebGIS>,补充更多的资料说明.基于地图二次开发一直断断续续在做,这里算是补充一下基本功把.其实对于前端,WebGis开发都是api,抄demo,改.GIS深 ...

  5. Android安全开发之浅谈密钥硬编码

    Android安全开发之浅谈密钥硬编码 作者:伊樵.呆狐@阿里聚安全 1 简介 在阿里聚安全的漏洞扫描器中和人工APP安全审计中,经常发现有开发者将密钥硬编码在Java代码.文件中,这样做会引起很大风 ...

  6. Android应用安全开发之浅谈加密算法的坑

      <Android应用安全开发之浅谈加密算法的坑> 作者:阿里移动安全@伊樵,@舟海 阿里聚安全,一站式解决应用开发安全问题     Android开发中,难免会遇到需要加解密一些数据内 ...

  7. 浅谈Python在信息学竞赛中的运用及Python的基本用法

    浅谈Python在信息学竞赛中的运用及Python的基本用法 前言 众所周知,Python是一种非常实用的语言.但是由于其运算时的低效和解释型编译,在信息学竞赛中并不用于完成算法程序.但正如LRJ在& ...

  8. 安卓开发_浅谈ListView(SimpleAdapter数组适配器)

    安卓开发_浅谈ListView(ArrayAdapter数组适配器) 学习使用ListView组件和SimapleAdapter适配器实现一个带图标的ListView列表 总共3部分 一.MainAc ...

  9. 安卓开发_浅谈Android动画(四)

    Property动画 概念:属性动画,即通过改变对象属性的动画. 特点:属性动画真正改变了一个UI控件,包括其事件触发焦点的位置 一.重要的动画类及属性值: 1.  ValueAnimator 基本属 ...

随机推荐

  1. Unity API学习笔记(2)-GameObject的3种Message消息方法

    官方文档>GameObject 首先建立测试对象: 在Father中添加两个脚本(GameObejctTest和Target),分别用来发送Message和接受Message: 在其它GameO ...

  2. JVM运行机制(非原创)

    文章大纲 JVM基本概念 JVM的体系结构 JVM启动流程 一.JVM基本概念 Java虚拟机(JVM)是可运行Java代码的假想计算机 Java虚拟机包括类加载器.一组寄存器.方法区.一个垃圾回收堆 ...

  3. OSI模型级各层功能

    OSI(Open System Interconnection 即 开放系统互联)国际标准化组织(ISO)制定了OSI模型,该模型定义了不同计算机互联的标准,是设计和描述计算机网络通信的基本框架.OS ...

  4. [PHP] 存储改造中的逻辑和清理遗留的问题

    现象:用户读信时,根据路径的哈希结果,访问四台服务器中一台请求文件,这四台缓存机器已经下线,访问不到再去后端存储访问浪费了时间 前因:每一封信都是一个文件,存储在公司内部的分布式文件系统s3上.因为读 ...

  5. postman---postman文件夹介绍以及批量执行用例

    我们在做测试的过程中,都会多次请求接口,都会把接口保存下来,方便下次直接请求,节省时间不用每次都重新输入,我们一起看下Postman如何保存接口会话 保存请求作用 Postman可以将各个请求组合保存 ...

  6. requests的请求机制

    库结构: 工作机制: api.py get.post.put.delete等请求方式都在api文件中,另外,api文件中还有个request方法,使用任何一种请求方式都是调用request方法,只是传 ...

  7. vue中keepAlive的使用

    在开发中经常有从列表跳到详情页,然后返回详情页的时候需要缓存列表页的状态(比如滚动位置信息),这个时候就需要保存状态,要缓存状态:vue里提供了keep-alive组件用来缓存状态.可以用以下几种方案 ...

  8. Centos7防火墙添加端口

    添加 firewall-cmd --zone=public --add-port=80/tcp --permanent   (--permanent永久生效,没有此参数重启后失效) 重新载入 fire ...

  9. Python进阶-XVII 非python的接口类、多态、python自己的封装

    1.python模拟java中的接口类 python中是没有接口类的概念的,因为它支持多继承,但是java不能,所以就提出一个接口类的概念 java : 面向对象编程 设计模式 —— 接口 接口类 : ...

  10. map 基本使用

    package main import "fmt" func main(){ //定义一个map变量,类型为map[int]string,如果使用map一定初始化,make分配空间 ...