本文会的介绍python中的基本数据类型。女装大佬表示这有点基础,我们尽可能在此基础上拓展一些内容吧。
0.基本数据类型
Python中有大致六种基本数据类型
Number(数字)
String(字符串)
List(列表)
Tuple(元组)
Set(集合)
Dictionary(字典)
可以明显看出其数据类型
相比于C语言有明显的简化
下面我们将逐一介绍这些数据类型
以及他们的常见用法
1.Number(数字)
Python3 支持int、float、bool、complex(复数)。
整型、浮点型和布尔型我们比较熟悉
(需要注意布尔的True和False必须像这样拼写)
复数通常写作 a + bj(a,b均为常数)的形式
比如4 + 3 j(注意不是中学的i,必须用j表示虚数单位)
(type表示返回变量类型的函数)
同时python3支持更多的运算符
其中+ - * / % 我们都很熟悉啦
** 表示乘方,在python中可以作为运算符使用
而 / 和 // 的差别在于 // 表示取整除法
相当于C语言中两个整数相除的情况
而 / 表示正常的除法
也就是说在python中
除法运算的除法类型不依赖于除号两边的变量类型
而取决于除法符号的类型
这是与C语言有所区别的
2.String(字符串)
python的字符串
真可以称得上是一种神奇的存在
它可加可乘可截取
还有很多骚操作
值得注意的是
python中别没有像C语言
将字符和字符串作为两种数据类型
而是将单个字符也看做长度为1的字符串
因此字符串用单双引号引起来都是可以的
下图是字符串的基本操作
+操作是字符串的连接,*表示字符串重复若干次
[n]类似于对数组的操作,可以返回下标为n的字符
此外[] 还有更为神奇的操作
可以截取字符串片段
在[]中使用冒号运算符[m:n]
可以截取下标在m,n之间的子串
若m缺省则截取从头开始到下标n处的子串
n缺省也同理
你以为这样就很厉害?
其实还有更神奇的
当上述m,n为非负数的时候表示下标从字符串第一个字符处计算
我们也可以使用负数下标
表示从串末开始数
in 和not in是两种逻辑运算
当执行 a in b时
若a是b的一个子串
则返回True
你可能会觉得
这有点像万恶的数据结构中的模式匹配
确实,python的开发人员做了一件大好事
让我们免于沉陷在复杂的数据结构中无法自拔
R/r的用法也很有趣
这是为了让转义字符按照字面意义被解释
我们知道\n在字符串中
表示换行的意思
如果我们就希望字符串中出现\n怎么办呢
这就需要用r运算
%是格式字符串运算符
比如有一句欢迎语'hello, XXX'
XXX我们希望根据访客名称动态填入
我们就可以'hello,%s'
这就表示这个字符串中
已经留出了一个字符串的位置
虚位以待
当然字符串中可以有多个这种占位符
在格式化的时候只需要在%的参数中依次放入参数即可
相对于这种方法
format可能更加时髦
因为format方法不需要指出要填入的类型
只需要留出一个{}
3.List(列表)
列表非常像C语言中的数组
用[a,b,c,...]的形式表示
但它的功能可能比C语言的数组强大的多
python允许列表中的元素可以是不同类型
上述提到了字符串
可以看做是字符的列表
因此它们之间有许多相似的操作
比如列表与列表可以相加得到新的列表
也可以自乘一个数
将列表重复n遍
也可以通过下标引用其中的某一个列表值
也可以通过正负下标或下标进行截取
此外列表还有其他许多操作
这里我们只介绍append和extend
append表示向列表末尾添加一个元素
extend表示将另一个列表添加到当前列表之后
有点类似与 a = a + b
4.tuple(元组)
元组与列表的非常像
其操作大多可以参照列表的操作
只是元组的元素不能修改
如图我们可以对元组进行类似列表一样的操作
但我们打算修改元组中元素的值时
遭到了python解释器的严词拒绝
元组有时可以表示数据库查询的返回值
而且有着极为方便的赋值特性
我们可以利用一个元组
在一行语句中对多个变量赋值
5.Set(集合)
集合(set)是一个无序不重复元素的序列。
可以使用大括号{ }创建集合
python的这种集合的定义
与数学上的定义如出一辙
同时其也具备数学上集合的运算
交(&)并(|)减(-)异或(^)
6.Dict(字典)
字典这种数据结构
在python中会经常使用
字典的每个键值(key=>value)对用冒号(:)分割
每个对之间用逗号(,)分割
整个字典包括在花括号中
其中key必须是唯一的
例如 {‘code’:2016111888,"name":'"radium"}
访问字典中的值可以在中括号中引用key
修改键值对和添加键值对的代码差不多
直接引用要修改或添加的键并赋值即可
而删除键值对则要用到del命令
此外字典还有其他一些操作
7.不可变数据
这六种数据类型中
Number(数字)、String(字符串)、Tuple(元组)
属于不可变数据
我们用以下代码做个小实验
id可以认为是查看变量在内存中的地址的函数
我们不难得到以下结果
我们观察到
在a的值改变之后
其在内存中地址的值也改变了
然而当b赋了a的初值时
其在内存中的地址竟然一样
原来这里讲的不可变数据
并非a这个变量不可变
而是一旦某个值在内存中设定了
它就在此处扎根了
这种变量名和变量值的关系
可以理解为一种引用关系
明白C/C++ 的朋友一眼就能看出
变量名实际上是指针
显然这需要python解释器(虚拟机)
能够良好的管理内存
及时地回收不用的变量值
People always say that it's too late. However, in fact, now is the best appropriate time. For a man who really wants to seek for something, every period of life is younger and timely.
一起分享学习的点滴
扫码加入机器学习小组(为保证学习群质量请先加管理员经验证后自动加群)
领取专属 10元无门槛券
私享最新 技术干货