Python中常见的数据类型小结


Posted in Python onAugust 29, 2015

Python提供多种数据类型来存放数据项集合,主要包括序列(列表list和元组tuple),映射(如字典dict),集合(set),下面对这几种一一介绍:

一 序列

1.列表list

列表是一种有序的集合,相对于元组和字符串的不同是它其中的元素可变,可以随时添加和删除其中的元素。

(1)创建list

在命令行中测试,如下:

>>> L1 = [1,2,3]
>>> L1
[1, 2, 3]
>>> L2 = ['abc']
>>> L2
['abc']
>>> L3 = ["a","b","c"]
>>> L3
['a', 'b', 'c']

注意,字符串的一定要加引号。

通过list对字符串创建列表非常有效,比如:

>>> L = list("Python")
>>> L
['P', 'y', 't', 'h', 'o', 'n']

(2)访问list

根据索引来访问,注意不能越界,这一点跟数组特别像:

>>> L[0]
'P'
>>> L[-1]
'n'

(3)添加新元素

用append()方法,把新元素追加到list的末尾;insert()可以将一个新元素添加到特定的位置。

(4) 删除元素

删除元素可以采用pop()方法,执行L.pop()删除list的最后一个元素,如果是特定位置的话可以采用pop(2),2表示的是位置。

(5)替换

替换很简单,直接索引就可以。

(6)打印

>>> L = ['a','b','c']
>>> for i in L:
 print(i) 
a
b
c

2. tuple

(1)创建

与list所不同的是,tuple一般采用()括起来,命令行中测试,如下:

T= 1,2,3
>>> T
(1, 2, 3)
>>> T = (1,2,3)
>>> T
(1, 2, 3)
>>> T = "abc"
>>> T
'abc'

创建空元组:T = ()

定义一个元素的元组:

>>> T = (1)
>>> T
1
这样运行了结果是对的,看起来也没错,但是这种定义其实并不正确,这种定义的不是tupel,而是1这个数,这是因为括号()既可以表示tuple,又可以表示数学公式中的小括号,这就产生了歧义,因此,Python规定,这种情况下,按小括号进行计算,计算结果自然是1。所以定义含一个元素的元组时必须加一个逗号,如下:

>>> T = (1,)
>>> T
(1,)

(2)访问

直接索引就好,如下:

>>> T =(1,2,3)
>>> T[1]
2

(3)更改

上述定义的tuple是不变的,但是我们可以在tuple中定义list对其进行修改:

>>> T = (1,2,['a','b'])
>>> T[2][0]
'a'
>>> T[2][0] = 'c'
>>> T
(1, 2, ['c', 'b'])

在tuple中,虽然元素不可以修改,但是我们可以对其进行连接组合:

>>> T1 = [1,2,3]
>>> T2 = [4,5,6]
>>> T3 = T1 + T2
>>> T3
[1, 2, 3, 4, 5, 6]

3.字符串

(1)创建

>>> str = "Hello Python"
>>> str
'Hello Python'

(2)访问

>>> str[0]

'H'

(3)相加

>>>str = "hello "
>>>str = "Python"
>>> str3 = str1 + str2
>>> str3

'Hello Python'

4.通用的序列操作方法

(1)索引

在访问序列元素中用到,如下:

>>> L = ['a','b','c']
>>> L[1]

'b'

>>> T = (1,2,3)
>>> T[0]

1

>>> str = "Python"
>>> str[4]

'o'

(2)分片

分片用来访问一定范围内的元素,分片通常通过冒号相隔的两个索引来实现,常见的有如下几种:

>>> a = list(range(10))
>>> a

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

>>> b = a[1:5]
>>> b

[1, 2, 3, 4]
>>> c = a[-3:-1]
>>> c

[7, 8]
>>> d = a[1:10:2]
>>> d

[1, 3, 5, 7, 9]

二 映射(字典)

映射中的每个元素都有一个专业的名字,叫做键。字典是Python中唯一内建的映射类型,下来我们对其进行详细介绍:

(1)键类型

字典(dict)是一个存放无序的键值映射(key/value)类型数据的容器字典的键可以是数

字、字符串或者是元组,键必须唯一。在Python中,数字、字符串和元组都被设计成不可变类型,而常见的列表以及集合(set)都是可变的,所以列表和集合不能作为字典的键。键可以为任何不可变类型,这正是Python中的字典最强大的地方。

(2)创建

>>> d = {}
>>> d[1] = 1
>>> d

{1: 1}
>>> d['cat'] = 'Lucy'
>>> d

{1: 1, 'cat': 'Lucy'}

(3)查找

dict是通过key来查找value,表示的是意义对应的关系,可以通过d[key]的方式来访问dict:

>>> d['cat']

'Lucy'

(4)遍历

>>> d = {}
>>> d['cat'] = 'Lucy'
>>> d['dog'] = 'Ben'
>>> for key in d:

print(key + ":",d[key])

结果

cat: Lucy

dog: Ben

(5)优缺点

dict的第一个特点是查找速度快,而且查找的速度与元素的个数无关,而list的查找速度是随着元素的增加而逐渐下降的;第二个特点是存储的key-value序对是没有顺序的;第三个特点是作为key得到元素是不可变的,所以list不能作为key。

dict的缺点是占用内存大,还会浪费很多内容。
三 集合(set)

dict是建立了一系列的映射关系,而set是建立一系列无序的,不重复的元素。

(1)创建

创建set的方式是调用set()并传入一个list,list的元素将作为set的元素。

>>> S = set([1,2,3])
>>> S

{1, 2, 3}

重复元素在Set中自动过滤,如:

>>> S = set([1,1,2,3,4,5,4])
>>> S

{1, 2, 3, 4, 5}

(2)添加

add()添加,有重复元素可以添加,但不会有效果:

>>> S.add(4)
>>> S

{1, 2, 3, 4, 5}

>>> S.add(9)
>>> S

{1, 2, 3, 4, 5, 9}

(3)删除

>>> S.remove(9)
>>> S

{1, 2, 3, 4, 5}
(4)交集,并集

set可以看成数学意义上的无序和无重复元素的集合,因此,两个set可以做数学意义上的交集、并集:

>>> S1 = set([1,2])
>>> S2 = set([2,3])
>>> S1&S2

{2}
>>> S1|S2

{1, 2, 3}

set和dict的唯一区别仅在于没有存储对应的value,但是,set的原理和dict一样,所以,同样不可以放入可变对象,因为无法判断两个可变对象是否相等,也就无法保证set内部“不会有重复元素”

四 list,tuple,dict和set的主要区别

1 .list

list是一个使用方括号括起来的有序元素集合;

List 可以作为以 0 下标开始的数组,任何一个非空 list 的第一个元素总是 L[0],负数索引从 list 的尾部开始向前计数来存取元素。任何一个非空的 list 最后一个元素总是 L[-1];

有分片功能,两个list可以相加;

append 向 list 的末尾追加单个元素;

insert 将单个元素插入到 list 中;

extend 用来连接 list,使用一个 list 参数进行调用;

append 接受一个参数, 这个参数可以是任何数据类型, 并且简单地追加到 list 的尾部;

index 在 list 中查找一个值的首次出现并返回索引值;

要测试一个值是否在 list 内, 使用 in, 如果值存在, 它返回 True, 否则返为 False ;

remove 从 list 中删除一个值的首次出现;

pop 可以删除 list 的最后一个元素, 然后返回删除元素的值,用索引删除制定位置的值; 

2.tuple

tuple是不可变的list,创建了一个tuple就不能以任何方式改变它;

定义tuple是将整个元素集是用小括号括起来,是有序集合;

tuple的索引与list一样从0开始,所以一个非空的tuple的第一个元素总是t[0];

负数索引与 list 一样从 tuple 的尾部开始计数;

与 list 一样分片 (slice) 也可以使用。分割一个 tuple 时, 会得到一个新的 tuple;

没有 append、extend、remove或pop方法以及index方法;

可以使用in来查看一个元素是否存在于tuple 中。

3.dict

dict定义了键和值之间的一一对应关系,每个元素都是一个key-value对;

整个元素集合用大括号括起来,有序集合;

可以通过 key 得到value, 但不能通过vaule获取 key;

在一个 dict中不能有重复的 key, 并且 key 是大小写敏感的;

键可以是数字、字符串或者是元组等不可变类型;

用del使用key可以删除dict中的独立元素;

用clear可以清除dict中的所有元素。

4.set

set是建立一系列无序的,不重复的元素;

创建set的方式是调用set()并传入一个list,list的元素将作为set的元素;

set和dict的唯一区别仅在于没有存储对应的value。

以上是就是对Python数据类型的全部总结,希望对大家的学习有所帮助。

Python 相关文章推荐
pydev使用wxpython找不到路径的解决方法
Feb 10 Python
安装dbus-python的简要教程
May 05 Python
Python使用pip安装报错:is not a supported wheel on this platform的解决方法
Jan 23 Python
500行Python代码打造刷脸考勤系统
Jun 03 Python
Python之虚拟环境virtualenv,pipreqs生成项目依赖第三方包的方法
Jul 23 Python
Python实现直方图均衡基本原理解析
Aug 08 Python
python爬虫 urllib模块反爬虫机制UA详解
Aug 20 Python
Python字典的概念及常见应用实例详解
Oct 30 Python
Python Opencv 通过轨迹(跟踪)栏实现更改整张图像的背景颜色
Mar 09 Python
Python集成开发工具Pycharm的安装和使用详解
Mar 18 Python
Python基于QQ邮箱实现SSL发送
Apr 26 Python
Python答题卡识别并给出分数的实现代码
Jun 22 Python
深入解析Python中的lambda表达式的用法
Aug 28 #Python
两个使用Python脚本操作文件的小示例分享
Aug 27 #Python
简介二分查找算法与相关的Python实现示例
Aug 26 #Python
使用Python的Bottle框架写一个简单的服务接口的示例
Aug 25 #Python
栈和队列数据结构的基本概念及其相关的Python实现
Aug 24 #Python
如何使用七牛Python SDK写一个同步脚本及使用教程
Aug 23 #Python
Python中for循环和while循环的基本使用方法
Aug 21 #Python
You might like
JSON 学习之完全手册 图文
2007/05/29 Javascript
JS获取后台Cookies值的小例子
2013/03/04 Javascript
JQUERY对单选框(radio)操作的小例子
2013/04/25 Javascript
在JavaScript中使用timer示例
2014/05/08 Javascript
浅谈Jquery为元素绑定事件
2015/04/27 Javascript
使用Raygun对Node.js应用进行错误处理的方法
2015/06/23 Javascript
深入理解js generator数据类型
2016/08/16 Javascript
react-native组件中NavigatorIOS和ListView结合使用的方法
2017/09/30 Javascript
JavaScript适配器模式详解
2017/10/19 Javascript
Vue2.0 实现单选互斥的方法
2018/04/13 Javascript
webpack公共组件引用路径简化小技巧
2018/06/15 Javascript
react-native使用leanclound消息推送的方法
2018/08/06 Javascript
vue-router之nuxt动态路由设置的两种方法小结
2018/09/26 Javascript
Vue form表单动态添加组件实战案例
2019/09/02 Javascript
Antd-vue Table组件添加Click事件,实现点击某行数据教程
2020/11/17 Javascript
Python实现SMTP发送邮件详细教程
2021/03/02 Python
Python3实现并发检验代理池地址的方法
2016/09/18 Python
使用Python Pandas处理亿级数据的方法
2019/06/24 Python
python中dict使用方法详解
2019/07/17 Python
Pytorch数据拼接与拆分操作实现图解
2020/04/30 Python
Python filter过滤器原理及实例应用
2020/08/18 Python
Python grpc超时机制代码示例
2020/09/14 Python
施华洛世奇澳大利亚官网:SWAROVSKI澳大利亚
2017/01/06 全球购物
存储过程的优缺点是什么
2015/01/10 面试题
安全检查管理制度
2014/02/02 职场文书
岗位竞聘书范文
2014/03/31 职场文书
维修工先进事迹
2014/05/29 职场文书
土建施工员岗位职责
2014/07/16 职场文书
战略合作意向书
2014/07/29 职场文书
股东出资证明书(正规版)
2014/09/24 职场文书
2014年作风建设剖析材料
2014/10/23 职场文书
2015年端午节活动策划书
2015/05/05 职场文书
初中政教处工作总结
2015/08/12 职场文书
2019新学期家长会工作计划
2019/08/21 职场文书
读《茶花女》有感:山茶花的盛开与凋零
2020/01/17 职场文书
简单聊聊TypeScript只读修饰符
2022/04/06 Javascript