开发|浅谈python数据类型

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

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

前言

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

正文

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

基础知识

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

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

None类型

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

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

布尔类型

布尔类型:True/False

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

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 型

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'

hash

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

2)python 实现hash

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

>>> hash('rongming')
3985893259886982844
>>> hash('rongming')
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. 微信小程序和支付宝小程序富文本使用

    微信小程序使用的是 1. wxml 页面元素的最简单使用 <rich-text nodes="{{这是你的数据}}"></rich-text>   2. j ...

  2. Unity API学习笔记(1)

    首先创建测试项目: 这里我选择了2D,其实都可以,之后可以在项目中修改. 修改方法: 进入正题. 首先看一下官方提供的>手册和>脚本API文档. 创建C#脚本文件并打开: 默认的脚本文件为 ...

  3. nginx 配置不当导致目录遍历下载漏洞

    今天做百度杯的时候发现一个题很有意思. 点进题目,发现了一个js重定向到login.php,抓包发现请求的header中cookie=0,做过这种类似的题目,o==false,在请求头里面将cooki ...

  4. SQL学习_SQL函数

    常用的 SQL 函数 1. 算术函数 SELECT ABS(-2),运行结果为 2 SELECT MOD(101,3),运行结果 2 SELECT ROUND(37.25,1),运行结果 37.3 2 ...

  5. Saltstack_使用指南11_配置管理-状态之间依赖关系

    1. 说明 下文的案例是根据上一篇文章进行的修改.因此请优先读取上一篇文章内容<Saltstack_10_配置管理-状态模块> 并且目录进行了变化,从 /srv/salt/lamp 变为了 ...

  6. session:

    内容回顾: 多对多  class Pulisher(models.Model):  name = models.CharField(max_length=32) ​ class Book(models ...

  7. CF613B Skills

    CF613B Skills 洛谷评测传送门 题目描述 Lesha plays the recently published new version of the legendary game hack ...

  8. angular 多路由模块新建组件的方法

    More than one module matches. Use skip-import option to skip importing the component into the closes ...

  9. CentOS7 安装 anaconda

    Anaconda是一个开源的Python发行版本,可以帮助我们更方便地配置Python环境. 如果只需要某些包,或者需要节省带宽或存储空间,也可以使用Miniconda这个较小的发行版 0. 开始前 ...

  10. <String> 179 ,6, 168

    179. Largest Number 冒泡排序,每一轮都把最小的数字选出放在最后. class Solution { public String largestNumber(int[] nums) ...