Python3基础之基本数据类型概述


Posted in Python onAugust 13, 2014

本文针对Python3中基本数据类型进行实例介绍,这些对于Python初学者而言是必须掌握的知识,具体内容如下:

首先,Python中的变量不需要声明。每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。在Python中,变量就是变量,它没有类型,我们所说的“类型”是变量所指的内存中对象的类型。Python 3中有六个标准的数据类型:

Numbers(数字)

String(字符串)

List(列表)

Tuple(元组)

Sets(集合)

Dictionaries(字典)

本文主要先介绍这几种数据类型的定义和它们之间的联系与区别。

一、Numbers

Python 3支持int、float、bool、complex(复数)。数值类型的赋值和计算都是很直观的,就像大多数语言一样。内置的type()函数可以用来查询变量所指的对象类型。

>>> a, b, c, d = 20, 5.5, True, 4+3j
>>> print(type(a), type(b), type(c), type(d))
<class 'int'> <class 'float'> <class 'bool'> <class 'complex'>

数值运算:

>>> 5 + 4 # 加法
9
>>> 4.3 - 2 # 减法
2.3
>>> 3 * 7 # 乘法
21
>>> 2 / 4 # 除法,得到一个浮点数
0.5
>>> 2 // 4 # 除法,得到一个整数
0
>>> 17 % 3 # 取余 
2
>>> 2 ** 5 # 乘方
32

要点:

1、Python可以同时为多个变量赋值,如a, b = 1, 2。
2、一个变量通过赋值可以指向不同类型的对象。
3、数值的除法(/)总是返回一个浮点数,要获取整数使用//操作符。
4、在混合计算时,Pyhton会把整型转换成为浮点数。

二、Strings

Python中的字符串str用单引号(‘ ')或双引号(“ ”)括起来,同时使用反斜杠(\)转义特殊字符。

>>> s = 'Yes,he doesn\'t'
>>> print(s, type(s), len(s))
Yes,he doesn't <class 'str'> 14

如果你不想让反斜杠发生转义,可以在字符串前面添加一个r,表示原始字符串:

>>> print('C:\some\name')
C:\some
ame
>>> print(r'C:\some\name')
C:\some\name

另外,反斜杠可以作为续行符,表示下一行是上一行的延续。还可以使用"""..."""或者'''...'''跨越多行。

字符串可以使用 + 运算符串连接在一起,或者用 * 运算符重复:

>>> print('str'+'ing', 'my'*3)
string mymymy

Python中的字符串有两种索引方式,第一种是从左往右,从0开始依次增加;第二种是从右往左,从-1开始依次减少。注意,没有单独的字符类型,一个字符就是长度为1的字符串。

>>> word = 'Python'
>>> print(word[0], word[5])
P n
>>> print(word[-1], word[-6])
n P

还可以对字符串进行切片,获取一段子串。用冒号分隔两个索引,形式为变量[头下标:尾下标]。截取的范围是前闭后开的,并且两个索引都可以省略:

>>> word = 'ilovepython'
>>> word[1:5]
'love'
>>> word[:]
'ilovepython'
>>> word[5:]
'python'
>>> word[-10:-6]
'love'

与C字符串不同的是,Python字符串不能被改变。向一个索引位置赋值,比如word[0] = 'm'会导致错误。

要点:

1、反斜杠可以用来转义,使用r可以让反斜杠不发生转义。
2、字符串可以用+运算符连接在一起,用*运算符重复。
3、Python中的字符串有两种索引方式,从左往右以0开始,从右往左以-1开始。
4、Python中的字符串不能改变。

三、List

List(列表) 是 Python 中使用最频繁的数据类型。列表是写在方括号之间、用逗号分隔开的元素列表。列表中元素的类型可以不相同:

>>> a = ['him', 25, 100, 'her'] 
>>> print(a, type(a), len(a))
['him', 25, 100, 'her'] <class 'list'> 4

和字符串一样,列表同样可以被索引和切片,列表被切片后返回一个包含所需元素的新列表。详细的在这里就不赘述了。

列表还支持串联操作,使用+操作符:

>>> a = [1, 2, 3, 4, 5]
>>> a + [6, 7, 8]
[1, 2, 3, 4, 5, 6, 7, 8]

与Python字符串不同的是,列表中的元素是可以改变的:

>>> a = [1, 2, 3, 4, 5, 6]
>>> a[0] = 9
>>> a[2:5] = [13, 14, 15]
>>> a
[9, 2, 13, 14, 15, 6]
>>> a[2:5] = []  # 删除
>>> a
[9, 2, 6]

List内置了有很多方法,例如append()、pop()等等,这在后面会讲到。

要点:

1、List写在方括号之间,元素用逗号隔开。
2、和字符串一样,list可以被索引和切片。
3、List可以使用+操作符进行拼接。
4、List中的元素是可以改变的。

四、Tuple

元组(tuple)与列表类似,不同之处在于元组的元素不能修改。元组是写在小括号之间、用逗号隔开的元素列表。元组中的元素类型也可以不相同:

>>> a = (1991, 2014, 'physics', 'math')
>>> print(a, type(a), len(a))
(1991, 2014, 'physics', 'math') <class 'tuple'> 4

元组与字符串类似,可以被索引且下标索引从0开始,也可以进行截取/切片(看上面,这里不再赘述)。其实,可以把字符串看作一种特殊的元组。

>>> tup = (1, 2, 3, 4, 5, 6)
>>> print(tup[0], tup[1:5])
1 (2, 3, 4, 5)
>>> tup[0] = 11 # 修改元组元素的操作是非法的

虽然tuple的元素不可改变,但它可以包含可变的对象,比如list列表。
构造包含0个或1个元素的tuple是个特殊的问题,所以有一些额外的语法规则:

tup1 = () # 空元组
tup2 = (20,) # 一个元素,需要在元素后添加逗号

另外,元组也支持用+操作符:

>>> tup1, tup2 = (1, 2, 3), (4, 5, 6)
>>> print(tup1+tup2)
(1, 2, 3, 4, 5, 6)

string、list和tuple都属于sequence(序列)。

要点:

1、与字符串一样,元组的元素不能修改。
2、元组也可以被索引和切片,方法一样。
3、注意构造包含0或1个元素的元组的特殊语法规则。
4、元组也可以使用+操作符进行拼接。

五、Sets

集合(set)是一个无序不重复元素的集。基本功能是进行成员关系测试和消除重复元素。可以使用大括号或者set()函数创建set集合,注意:创建一个空集合必须用 set() 而不是 { },因为{ }是用来创建一个空字典。

>>> student = {'Tom', 'Jim', 'Mary', 'Tom', 'Jack', 'Rose'}
>>> print(student)  # 重复的元素被自动去掉
{'Jim', 'Jack', 'Mary', 'Tom', 'Rose'}
>>> 'Rose' in student # membership testing(成员测试)
True
>>> # set可以进行集合运算
... 
>>> a = set('abracadabra')
>>> b = set('alacazam')
>>> a
{'a', 'b', 'c', 'd', 'r'}
>>> a - b   # a和b的差集
{'b', 'd', 'r'}
>>> a | b   # a和b的并集
{'l', 'm', 'a', 'b', 'c', 'd', 'z', 'r'}
>>> a & b   # a和b的交集
{'a', 'c'}
>>> a ^ b   # a和b中不同时存在的元素
{'l', 'm', 'b', 'd', 'z', 'r'}

要点:

1、set集合中的元素不重复,重复了它会自动去掉。
2、set集合可以用大括号或者set()函数创建,但空集合必须使用set()函数创建。
3、set集合可以用来进行成员测试、消除重复元素。

六、Dictionaries

字典(dictionary)是Python中另一个非常有用的内置数据类型。字典是一种映射类型(mapping type),它是一个无序的键 : 值对集合。关键字必须使用不可变类型,也就是说list和包含可变类型的tuple不能做关键字。在同一个字典中,关键字还必须互不相同。

>>> dic = {} # 创建空字典
>>> tel = {'Jack':1557, 'Tom':1320, 'Rose':1886}
>>> tel
{'Tom': 1320, 'Jack': 1557, 'Rose': 1886}
>>> tel['Jack']  # 主要的操作:通过key查询
1557
>>> del tel['Rose'] # 删除一个键值对
>>> tel['Mary'] = 4127 # 添加一个键值对
>>> tel
{'Tom': 1320, 'Jack': 1557, 'Mary': 4127}
>>> list(tel.keys()) # 返回所有key组成的list
['Tom', 'Jack', 'Mary']
>>> sorted(tel.keys()) # 按key排序
['Jack', 'Mary', 'Tom']
>>> 'Tom' in tel    # 成员测试
True
>>> 'Mary' not in tel # 成员测试
False

构造函数 dict() 直接从键值对sequence中构建字典,当然也可以进行推导,如下:

>>> dict([('sape', 4139), ('guido', 4127), ('jack', 4098)])
{'jack': 4098, 'sape': 4139, 'guido': 4127}

>>> {x: x**2 for x in (2, 4, 6)}
{2: 4, 4: 16, 6: 36}

>>> dict(sape=4139, guido=4127, jack=4098)
{'jack': 4098, 'sape': 4139, 'guido': 4127}

另外,字典类型也有一些内置的函数,例如clear()、keys()、values()等。

要点:

1、字典是一种映射类型,它的元素是键值对。
2、字典的关键字必须为不可变类型,且不能重复。
3、创建空字典使用{ }。

Python 相关文章推荐
Python实现发送email的几种常用方法
Aug 18 Python
Python判断直线和矩形是否相交的方法
Jul 14 Python
Python中str is not callable问题详解及解决办法
Feb 10 Python
基于python OpenCV实现动态人脸检测
May 25 Python
Python装饰器语法糖
Jan 02 Python
Pycharm如何打断点的方法步骤
Jun 13 Python
python使用pip安装SciPy、SymPy、matplotlib教程
Nov 20 Python
Python安装与卸载流程详细步骤(图解)
Feb 20 Python
解决Opencv+Python cv2.imshow闪退问题
Apr 24 Python
python小白学习包管理器pip安装
Jun 09 Python
Python xpath表达式如何实现数据处理
Jun 13 Python
尝试使用Python爬取城市租房信息
Apr 12 Python
Python常用正则表达式符号浅析
Aug 13 #Python
wxpython中利用线程防止假死的实现方法
Aug 11 #Python
将图片文件嵌入到wxpython代码中的实现方法
Aug 11 #Python
Python 执行字符串表达式函数(eval exec execfile)
Aug 11 #Python
Python def函数的定义、使用及参数传递实现代码
Aug 10 #Python
Python-基础-入门 简介
Aug 09 #Python
Python入门及进阶笔记 Python 内置函数小结
Aug 09 #Python
You might like
第五节 克隆 [5]
2006/10/09 PHP
关于页面优化和伪静态
2009/10/11 PHP
php配合jquery实现增删操作具体实例
2013/12/12 PHP
PHP中变量引用与变量销毁机制分析
2014/11/15 PHP
PHP简单实现上一页下一页功能示例
2016/09/14 PHP
php微信公众号js-sdk开发应用
2016/11/28 PHP
HR vs ForZe BO3 第二场 2.13
2021/03/10 DOTA
Javascript &amp; DHTML 实例编程(教程)DOM基础和基本API
2007/06/02 Javascript
使用JQuery进行跨域请求
2010/01/25 Javascript
浅谈JavaScript编程语言的编码规范
2011/10/21 Javascript
jQuery EasyUI之DataGrid使用实例详解
2016/01/04 Javascript
使用JavaScript为Kindeditor自定义按钮增加Audio标签
2016/03/18 Javascript
javascript鼠标滑过显示二级菜单特效
2020/11/18 Javascript
JS 实现banner图片轮播效果(鼠标事件)
2017/08/04 Javascript
Vue.js构建你的第一个包并在NPM上发布的方法步骤
2019/05/01 Javascript
js实现多张图片每隔一秒切换一张图片
2019/07/29 Javascript
python Django批量导入数据
2016/03/25 Python
python实现可以断点续传和并发的ftp程序
2016/09/13 Python
Python队列的定义与使用方法示例
2017/06/24 Python
在python中将字符串转为json对象并取值的方法
2018/12/31 Python
Python使用QQ邮箱发送邮件实例与QQ邮箱设置详解
2020/02/18 Python
Python rabbitMQ如何实现生产消费者模式
2020/08/24 Python
基于css3实现漂亮便签样式
2013/03/18 HTML / CSS
龟牌英国商店:Turtle Wax Brand Store UK
2019/07/02 全球购物
可以使用抽象函数重写基类中的虚函数吗
2013/06/02 面试题
十佳教师事迹材料
2014/01/11 职场文书
商场活动策划方案
2014/01/24 职场文书
供用电专业求职信
2014/07/07 职场文书
亲子运动会的活动方案
2014/08/17 职场文书
永远跟党走演讲稿
2014/09/12 职场文书
2014年“向国旗敬礼”网上签名寄语活动方案
2014/09/27 职场文书
2015年勤工助学工作总结
2015/04/29 职场文书
2016年教育局“我们的节日——端午节”主题活动总结
2016/04/01 职场文书
Nginx安装完成没有生成sbin目录的解决方法
2021/03/31 Servers
Python中的xlrd模块使用整理
2021/06/15 Python
Java中Dijkstra(迪杰斯特拉)算法
2022/05/20 Java/Android