开发技术--浅谈python数据类型
开发|浅谈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数据类型的更多相关文章
- 开发技术--浅谈Python函数
开发|浅谈Python函数 函数在实际使用中有很多不一样的小九九,我将从最基础的函数内容,延伸出函数的高级用法.此文非科普片~~ 前言 目前所有的文章思想格式都是:知识+情感. 知识:对于所有的知识点 ...
- 开发技术--浅谈python基础知识
开发|浅谈python基础知识 最近复习一些基础内容,故将Python的基础进行了总结.注意:这篇文章只列出来我觉得重点,并且需要记忆的知识. 前言 目前所有的文章思想格式都是:知识+情感. 知识:对 ...
- .net中对象序列化技术浅谈
.net中对象序列化技术浅谈 2009-03-11 阅读2756评论2 序列化是将对象状态转换为可保持或传输的格式的过程.与序列化相对的是反序列化,它将流转换为对象.这两个过程结合起来,可以轻松地存储 ...
- GIS历史概述与WebGis应用开发技术浅解
声明:本篇在李晓晖的<杂谈WebGIS>,补充更多的资料说明.基于地图二次开发一直断断续续在做,这里算是补充一下基本功把.其实对于前端,WebGis开发都是api,抄demo,改.GIS深 ...
- Android安全开发之浅谈密钥硬编码
Android安全开发之浅谈密钥硬编码 作者:伊樵.呆狐@阿里聚安全 1 简介 在阿里聚安全的漏洞扫描器中和人工APP安全审计中,经常发现有开发者将密钥硬编码在Java代码.文件中,这样做会引起很大风 ...
- Android应用安全开发之浅谈加密算法的坑
<Android应用安全开发之浅谈加密算法的坑> 作者:阿里移动安全@伊樵,@舟海 阿里聚安全,一站式解决应用开发安全问题 Android开发中,难免会遇到需要加解密一些数据内 ...
- 浅谈Python在信息学竞赛中的运用及Python的基本用法
浅谈Python在信息学竞赛中的运用及Python的基本用法 前言 众所周知,Python是一种非常实用的语言.但是由于其运算时的低效和解释型编译,在信息学竞赛中并不用于完成算法程序.但正如LRJ在& ...
- 安卓开发_浅谈ListView(SimpleAdapter数组适配器)
安卓开发_浅谈ListView(ArrayAdapter数组适配器) 学习使用ListView组件和SimapleAdapter适配器实现一个带图标的ListView列表 总共3部分 一.MainAc ...
- 安卓开发_浅谈Android动画(四)
Property动画 概念:属性动画,即通过改变对象属性的动画. 特点:属性动画真正改变了一个UI控件,包括其事件触发焦点的位置 一.重要的动画类及属性值: 1. ValueAnimator 基本属 ...
随机推荐
- 用AI思维给成本降温,腾讯WeTest兼容性测试直击底价!
WeTest 导读 当AI成为各行业提高产业效率的动能,很多人开始疑惑,这架智能化的“无人机”何时在移动应用测试中真正落地?在今年的国际数码互动娱乐博览会(ChinaJoy)上,腾讯WeTest给出了 ...
- centos7 apache后台转nginx后台
背景 一开始买完服务器装的是用apache搭的后台, 现在想使用nginx, 希望对你有参考作用 查看系统版本信息 lsb_release -a 我的版本信息是 首先关闭apache-tomcat服务 ...
- XHR 对象实例所有的配置、属性、方法、回调和不可变值
当我们声明了一个XMLHttpRequest对象的实例的时候,使用for-in来循环遍历一下这个实例(本文使用的是chrome45版本浏览器),我们会发现在这个实例上绑定了一些内容,我把这些内容进行了 ...
- PHP代码篇(五)--如何将图片文件上传到另外一台服务上
说,我有一个需求,就是一个临时功能.由于工作开发问题,我们有一个B项目,需要有一个商品添加的功能,涉及到添加商品内容,比如商品名字,商品描述,商品库存,商品图片等.后台商品添加的接口已经写完了,但是问 ...
- MSSQL添加外键
alter table 需要建立外键的表 with check/nocheck add constraint 外键名字 foreign key (需要建立外键的字段名) references 外键表( ...
- Python散列类型和运算符
集合定义 集合的交 并 差 常见的运算符的用法 字典的定义 字典的 get items keys pop popitem update 方法 三种逻辑运算 集合 集合特性 唯一性:不存在两 ...
- requests---发送post请求完成登录
前段时间写过一个通过cookies完成登录,今天我们写一篇通过post发送请求完成登录豆瓣网 模拟登录 1.首先找到豆瓣网的登录接口 打开豆瓣网站的登录接口,请求错误的账号密码,通过F12或者抓包工具 ...
- Linux shell 判断字符串为空等常用命令
1.判断字符串为空 if [ -z "$str" ]; then echo "empty string" fi 2.判断文件是否存在 if [ -f /home ...
- monkey和monkeyrunner的区别
简单来说: 1.monkey是在设备或模拟器直接运行adb shell命令生成随机事件来进行测试 2.monkeyrunner是通过API发送特定的命令和事件来控制设备 为了支持黑盒自动化测试的场景, ...
- 洛谷 P4710 「物理」平抛运动
洛谷 P4710 「物理」平抛运动 洛谷传送门 题目描述 小 F 回到班上,面对自己 28 / 110 的物理,感觉非常凉凉.他准备从最基础的力学学起. 如图,一个可以视为质点的小球在点 A(x_0, ...