前言:
本篇文章是《Python之旅》系列的第二篇,在上一篇文章中主要学习了:Python的中文编码、PYthon的基础语法以及Python的常见符号。
本篇文章主要学习的知识点有:Python的变量、多变量以及Python的五种数据类型
变量
变量是存储信息的容器。我个人通俗的理解是(通过拆字法来分析):变,说明这个物质在某一领域是可以变化、可以拓展的,但是变化的主动权需要有一定依据,你不能不受控制的变化(某一领域,我们可以理解为数据类型,主动权可以理解为代码逻辑,用户使用逻辑);量,在某一领域要遵循该领域定义的相对范围之内,无休止的大或者小是不行的,否则计算机在区分数据类型的设计之初就没有了任何意义(一定范围,我们可以理解为数据类型对应的使用范围),在计算机程序中,变量不仅可以是数字,还可以是程序范围内允许的数据类型。
在代码中创建变量时就意味在内存中开辟一块空间。基于变量的数据类型,解释器会分配指定内存,并决定什么数据(对应的数据类型)可以被存储在内存中。以下是Python的变量写法:标识符 = 数据类型,代码如下:
# 字符串
x = "1"
y = "2"
# 整数
a = 1
# 浮点数
b = 1.2
# 布尔类型
c = True
多变量赋值
以上代码的变量,都是单个赋值。当然,Python也允许开发者同时为多个变量赋值,如:
#多变量赋值-方式一:
e = f = g = 1
# 以上代码的意识是,创建一个整型对象,这个对象的值为1,三个变量被分配到相同的内存空间上。
#简单点理解就是将多行代码转换为一行代码
# 另外,Python也允许这样来实现多变量赋值:
#多变量赋值-方式二:
i, j, k = 1, True, "我爱你中国"
# 以上代码的意识是,一个整型对象1分配给变量i;
#一个布尔类型对象True分配给变量j;一个字符串对象 我爱你中国 分配给变量k
数据类型
首先我们一起来复习下,Java基本数据类型有那几种?Java基本数据类型共有八种,基本类型可以分为三类,字符类型char,布尔类型boolean以及数值类型byte、short、int、long、float、double。数值类型又可以分为整数类型byte、short、int、long和浮点数类型float、double,也有人称为四类八种。
在Python中,共有五个标准的数据类型,分别是:
- Numbers(数字)
- String(字符串)
- List(列表)
- Tuple(元组)
- Dictionary(字典)
下面就这五类数据类型做详细分析:
Numbers(数字)
数字类型包含以下四种:
- int(有符号整型)
- long(长整型)
- float(浮点型)
- complex(复数)
数字类型的数据主要是用来存储数值,当我们使用数值类型来指定一个变量值时,Number对象就会被创建:
# 整数
a = 1
a = 3
# 输出结果:3
print a
Python考虑到,内存申请过多如果既没有又没有及时释放可能会导致应用卡顿,因此,Python可以使用del语句删除一些对象的引用:
# 整数
a = 1
a = 3
# 输出结果:3
print a
#删除变量a在内存中的位置
del a
这个时候,如果不赋值继续想打印a变量值,就会报错,如图所示:
注意:
长整型也可以使用小写 l,但是还是建议您使用大写 L,避免与数字 1 混淆。Python使用 L 来显示长整型;另外,long 类型只存在于 Python2.X 版本中,在 2.2 以后的版本中,int 类型数据溢出后会自动转为long类型。在 Python3.X 版本中 long 类型被移除,使用 int 替代。
另外,数据类型是不允许改变的,这就意味着如果改变 Number 数据类型的值,将重新分配内存空间。因此,开发者也可以使用del语句删除一些 Number 对象引用,及时释放内存,这也是一种性能优化的具体实现。
String(字符串)
字符串或串(String):由数字、字母、下划线组成的一串字符并配上首尾引号的字符简称为字符串。
Python的字符串有2种取值顺序:
- A:从左到右索引默认0开始的,最大范围是字符串长度少1
-
B:从右到左索引默认-1开始的,最大范围是字符串开头
取值顺序
字符串有一些常见的使用规则,如拼接、截取字符串、重复:
a = 'Hello World!'
# 完整字符串 输出:Hello World!
print a
# 输出字符串中的第一个字符 输出:H
#这个大家不陌生,字符串根据索引输出对应的属性值
print a[0]
# 输出字符串中第三个至第五个之间的字符串 输出:llo
print a[2:5]
# 输出从第三个字符开始的字符串 输出:llo World!
print a[2:]
# 输出字符串 两次 输出:Hello World!Hello World!
# * 2 表示输出字符串 两次、* 3 表示输出字符串 三次
print a * 2
# 输出连接的字符串 输出:Hello World! Python
print a + " Python"
注意:这里的 星 号,后面跟的数字就是重复输出几遍,星 2 就代表重复输出2遍,以此类推
另外,Python也有一系列的字符串表示符,下面是具体实现即描述:
字符串表示符Python也提供了一系列字符串计算符,来方便开发者提高工作效率,具体的字符串计算符号如下:
字符串计算符
List(列表)
List数据类型,可以完成大多数集合类的数据结构实现。它支持字符,数字,字符串甚至可以包含列表(即嵌套)。List数据类型使用 [ ] 来进行标识,列表内从左到右,索引默认从 0 开始。下面是Python关于List数据类型的代码示例:
#列表的定义
listData = [True, "False", 233, 12.3]
smallListData = [123, 'john']
# 输出完整列表 [True, 'False', 233, 12.3]
print listData
# 输出列表的第一个元素 True
print listData[0]
# 输出第二个至第三个元素 ['False', 233]
print listData[1:3]
# 输出从第三个开始至列表末尾的所有元素 [233, 12.3]
print listData[2:]
# 输出列表两次 [123, 'john', 123, 'john']
print smallListData * 2
# 打印合并的列表 [True, 'False', 233, 12.3, 123, 'john']
print listData + smallListData
多提一嘴:看到这个格式,不仅想起Java中那个神奇的Object数组(引战勿喷):
Object [] arr = new Object[10];
arr[0] = true;
arr[1] = false;
arr[2] = 233;
arr[3] = 456;
arr[4] = 12.34;
arr[5] = "我爱你中国";
更新列表
Python的列表想要添加元素可以使用append来进行添加:代码如下:
#列表的定义
listData = [True, "False", 233, 12.3]
smallListData = [123, 'john']
# 添加单个元素
listData.append("Python")
# 输出: [True, 'False', 233, 12.3, 'Python']
print listData
# 添加子列表
listData.append(smallListData)
# 输出: [True, 'False', 233, 12.3, 'Python', [123, 'john']]
print listData
删除列表
Python的列表想要删除元素可以使用del来进行添加:代码如下:
#列表的定义
listData = [True, "False", 233, 12.3]
smallListData = [123, 'john']
# 删除具体的元素
del listData[1]
del listData[2]
# 打印具体的属性值 [True, 233]
print listData
为了方便后面对于列表的使用,下面的截图是列表常见API的使用:
列表的常用API
Tuple(元组)
元组是Python语言的另一个数据类型,类似于上面提到的List(列表)。元组使用()标识符来声明该变量是元组的数据类型。元组的内部元素使用逗号隔开。
注意:元组不能二次赋值,相当于只读列表,如果赋值,Python解释器就会报错。因此对元组的简单理解就是Python中不可变的列表。但元组也允许 根据索引截取、重复输出等基本操作
tupleData = (True, "False", 520, 13.14)
smallTupleData = (456, 'Tom')
# 输出完整元组 (True, 'False', 520, 13.14)
print tupleData
# 输出元组的第一个元素 True
print tupleData[0]
# 输出第二个至第三个的元素 ('False', 520)
print tupleData[1:3]
# 输出从第三个开始至列表末尾的所有元素 (520, 13.14)
print tupleData[2:]
# 输出元组两次 (True, 'False', 520, 13.14, True, 'False', 520, 13.14)
print tupleData * 2
# 打印合并起来的元组 (True, 'False', 520, 13.14, 456, 'Tom')
print tupleData + smallTupleData
刚才也说到了 元组不能设置值,如果设置值就会报错,如下图:
元组不能设置值
值得一提的是,虽然元组不能设置值,但是可以对元组进行连接组合:
#定义元组
data = (2,3)
newData = (4,5)
# 构建新的元组
endData = data + newData
# 最终打印:(2, 3, 4, 5)
print endData
由于元组也是一个序列,因此就可以访问元组中的指定位置的元素,这样也就可以截取索引中的一个元素或者一段元素。
- 获取元组单个元素的参考代码:
#定义元组
data = (2,3)
newData = (4,5)
# 构建新的元组
endData = data + newData
# 最终打印:(2, 3, 4, 5)
print endData
# 截取endData元组里面的索引为1的数据
subsData = endData[1]
# 会打印:3
print subsData
- 获取元组一段元素的参考代码:
#定义元组
data = (2,3)
newData = (4,5)
# 构建新的元组
endData = data + newData
# 最终打印:(2, 3, 4, 5)
print endData
# 截取endData元组里面的索引为1极其以后的数据
subsData = endData[1:]
# 会打印:(3, 4, 5)
print subsData
Dictionary(字典)
Python的字典(dictionary)数据类型,使用{ }来进行标识。字典数据类型由索引(key)和它对应的值value组成,因此和Java的Map有异曲同工之效。
值得一提的是:列表是有序的对象集合,字典是无序的对象集合。
既然类似于Java的Map,那么可以参考Java有两种写法,一种是先声明后赋值、还有一种是声明的时候就直接赋值
- 方式一:动态添加key 和 value
#创建字典
dictData = { }
#给字典依次添加索引及属性值
dictData['key1'] = "key1 对应的属性值"
dictData[2] = "2对应的属性值"
dictData[3] = True
dictData['hello'] = "我爱你中国"
dictData['word'] = 520.1314
print dictData['hello'] # 输出键为'hello' 的值 我爱你中国
print dictData['word'] # 输出键为 word 的值 520.1314
- 方式二:使用前就声明 key 和 value
# 使用前就定义字典
endDict = {'name': 'tom', 'code': "Python", 'profession': 'Coder'}
# 输出完整的字典 {'code': 'Python', 'profession': 'Coder', 'name': 'tom'}
print endDict
# 输出所有键 ['code', 'profession', 'name']
print endDict.keys()
# 输出code键 找到对应的value Python
print endDict['code']
# 输出所有属性值 ['Python', 'Coder', 'tom']
print endDict.values()
由于字典可以没有限制地取任何Python对象,因此它既可以是标准的对象,也可以是用户定义的,但键不行,所以要使用字典需要记住两个重要的点:
-
不允许同一个键出现两次。创建时如果同一个键被赋值两次,后一个值会被记住
-
键必须不可变,所以可以用数字,字符串或元组充当,因此列表就不行
总结:
本篇文章我们主要学习了:Python的变量、多变量以及Python的五种数据类型
如果这篇文章对您有开发or学习上的些许帮助,希望各位看官留下宝贵的star,谢谢。
Ps:著作权归作者所有,转载请注明作者, 商业转载请联系作者获得授权,非商业转载请注明出处(开头或结尾请添加转载出处,添加原文url地址),文章请勿滥用,也希望大家尊重笔者的劳动成果
网友评论