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 json encode datetime类型
Dec 28 Python
Python实现备份MySQL数据库的方法示例
Jan 11 Python
python实现百万答题自动百度搜索答案
Jan 16 Python
python进阶之多线程对同一个全局变量的处理方法
Nov 09 Python
python版飞机大战代码分享
Nov 20 Python
Python+PyQT5的子线程更新UI界面的实例
Jun 14 Python
python plotly绘制直方图实例详解
Jul 22 Python
flask框架自定义url转换器操作详解
Jan 25 Python
django model object序列化实例
Mar 13 Python
Matlab中plot基本用法的具体使用
Jul 17 Python
python文件排序的方法总结
Sep 13 Python
Python中文纠错的简单实现
Jul 07 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
一键删除顽固的空文件夹 软件下载
2007/01/26 PHP
PHP 编程安全性小结
2010/01/08 PHP
使用正则去除php代码中的注释方法
2016/11/03 PHP
PHP获取访问页面HTTP状态码的实现代码
2016/11/03 PHP
PHP数组相加操作及与array_merge的区别浅析
2016/11/26 PHP
浅谈PHP安全防护之Web攻击
2017/01/03 PHP
PHP7导出Excel报ERR_EMPTY_RESPONSE解决方法
2019/04/16 PHP
js jquery数组介绍
2012/07/15 Javascript
js算法中的排序、数组去重详细概述
2013/10/14 Javascript
javascript通过navigator.userAgent识别各种浏览器
2013/10/25 Javascript
AngularJS动态生成div的ID源码解析
2016/08/29 Javascript
Node之简单的前后端交互(实例讲解)
2017/11/14 Javascript
vue-router+nginx 非根路径配置方法
2018/06/30 Javascript
ng-zorro-antd 入门初体验
2018/12/03 Javascript
微信小程序如何修改本地缓存key中单个数据的详解
2019/04/26 Javascript
[16:04]DOTA2海涛带你玩炸弹 9月5日更新内容详解
2014/09/05 DOTA
python pickle 和 shelve模块的用法
2013/09/16 Python
在GitHub Pages上使用Pelican搭建博客的教程
2015/04/25 Python
Python利用Nagios增加微信报警通知的功能
2016/02/18 Python
Python 专题六 局部变量、全局变量global、导入模块变量
2017/03/20 Python
numpy 计算两个数组重复程度的方法
2018/11/07 Python
Python 日志logging模块用法简单示例
2019/10/18 Python
python+tifffile之tiff文件读写方式
2020/01/13 Python
Python reques接口测试框架实现代码
2020/07/28 Python
利用纯css3实现的文字亮光特效的代码演示
2014/11/27 HTML / CSS
巴基斯坦电子产品购物网站:Home Shopping
2017/09/14 全球购物
英国No.1体育用品零售商:SportsDirect.com
2019/10/16 全球购物
推荐信模板
2014/05/09 职场文书
安全环保标语
2014/06/09 职场文书
党的群众路线教育实践活动对照检查剖析材料
2014/10/09 职场文书
乡镇干部学习心得体会
2016/01/23 职场文书
2019年个人工作总结范文
2019/03/25 职场文书
干货!开幕词的写作方法
2019/04/02 职场文书
Python控制台输出俄罗斯方块移动和旋转功能
2021/04/18 Python
Go timer如何调度
2021/06/09 Golang
JS前端轻量fabric.js系列之画布初始化
2022/08/05 Javascript