简单总结Python中序列与字典的相同和不同之处


Posted in Python onJanuary 19, 2016

共同点:
1.它们都是python的核心类型,是python语言自身的一部分

核心类型与非核心类型
多数核心类型可通过特定语法来生成其对象,比如"dave"就是创建字符串类型的对象的表达式;
非核心类型需要内置函数来创建,比如文件类型需要调用内置函数open()来创建。
类也可以理解成自定义的非核心类型。

2.边界检查都不允许超越索引边界

>>> a = 'dave'
>>> a[3]

'e'

>>> a[4]
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
IndexError: string index out of range

3.索引方法都使用[ ]

>>> a = 'dave'
>>> print a[0]
d
>>> a = ['d','a','v','e']
>>> print a[0]
d
>>> a = ('d','a','v','e')
>>> print a[0]
d

4.大部分都支持迭代协议

不同点:

1.有序性
字符串,列表,元组是序列,元组可理解成不可变的列表
字典是python中唯一的映射类型
序列有有序性,字典没有顺序

2.可变性
列表,字典具有可变性.
字符串,元组,数字具有不可变性,即复制后对应存储空间的内容不可变,除非这个对象被销毁.
例如:

>>> s = 'dave'
>>> id(s)
140105068006304
>>> s = 'python' + s[1:]
>>> s
'pythonave'
>>> id(s)
140105067997536

第一行的s指向内存空间140105068006304,存储了字符串'dave'
第二行的s变成了'pythonave',但它只是重新指向了一个存储着'pythonave'字符串的内存地址.原来140105068006304的内存空间可能还是'dave',也可能被系统清理销毁.

3.序列操作
序列(字符串,列表,元组)支持,映射(字典)不支持
注意:序列操作生成的类型不变

>>> seq = 'dave'
>>> print seq[1:]
ave
>>> seq = ['d','a','v','e']
>>> print seq[1:]
['a', 'v', 'e']
>>> seq = ('d','a','v','e')
>>> print seq[1:]
('a', 'v', 'e')

4.列表解析表达式

表达式中支持序列(字符串,列表,元组),也支持映射(字典)
和序列操作不同的是,列表解析表达式生成的只能是一个列表.

>>> str = [ a * 2 for a in 'dave' ]
>>> print str
['dd', 'aa', 'vv', 'ee']
>>> L1 = [1,2,3]
>>> L2 = [4,5,6]
>>> L3 = [(a+b) for (a,b) in zip(L1,L2)]
>>> print L3
[5, 7, 9]
>>> tup = (1,2,3)
>>> tups = [ a * 2 for a in tup]
>>> print tups
[2, 4, 6]
>>> dic = {'a':'dave','b':'emily'}
>>> dics = [ i *2 for i in dic.items()]
>>> print dics
[('a', 'dave', 'a', 'dave'), ('b', 'emily', 'b', 'emily')]

字典的items(),keys(),values()方法都是返回的列表,这里的for i in a写for i ina.keys(),效果等同。

>>> dic = {'a':'dave','b':'emily'}
>>> dicts = [ i * 2 for i in dic]
>>> print dicts
['aa', 'bb']

5.嵌套

除了字符串外,列表,元组,字典可以相互多层嵌套
嵌套与可变性是不冲突的。
tup = (4, 5, a)中所记忆,录入的b是个变量指针,或者叫内存地址,是个数字。

>>> a = [1,2,3]
>>> tup = (4,5,a)
>>> print tup[2]
[1, 2, 3]
>>> a[0] = 'x'
>>> print tup[2]
['x', 2, 3]

a指向一个列表,列表具有可变性,所以b[0]='x'的操作后,对元组的索引可以看到变化

>>> a = '123'
>>> tup = (4,5,a)
>>> print tup[2]
123
>>> a = 'xxx'
>>> print tup[2]
123

a指向一个字符串,字符串具有不可变性,所以a = 'xxx'的操作后,a这个指针本身就改变了,重新指向另一段内存空间,而tup元组中记忆的内存地址所指空间并没有变,还是字符串'123'

上面2段,元组tup始终保持不可变性,要变化也是其元素作为指针所指向内存的变化.

Python 相关文章推荐
使用python实现baidu hi自动登录的代码
Feb 10 Python
python里将list中元素依次向前移动一位
Sep 12 Python
Python 中的Selenium异常处理实例代码
May 03 Python
python实现将汉字保存成文本的方法
Nov 16 Python
python如何查看微信消息撤回
Nov 27 Python
对python中GUI,Label和Button的实例详解
Jun 27 Python
Pytorch中的VGG实现修改最后一层FC
Jan 15 Python
pytorch 常用函数 max ,eq说明
Jun 28 Python
python实现梯度下降算法的实例详解
Aug 17 Python
Python批量获取并保存手机号归属地和运营商的示例
Oct 09 Python
python中str内置函数用法总结
Dec 27 Python
pytorch 带batch的tensor类型图像显示操作
May 20 Python
举例讲解如何在Python编程中进行迭代和遍历
Jan 19 #Python
Python的自动化部署模块Fabric的安装及使用指南
Jan 19 #Python
Python编程中time模块的一些关键用法解析
Jan 19 #Python
Python编程中的文件读写及相关的文件对象方法讲解
Jan 19 #Python
Python使用os模块和fileinput模块来操作文件目录
Jan 19 #Python
举例讲解Python面相对象编程中对象的属性与类的方法
Jan 19 #Python
python结合API实现即时天气信息
Jan 19 #Python
You might like
关于BIG5-HKSCS的解决方法
2007/03/20 PHP
php判断电脑访问、手机访问的例子
2014/05/10 PHP
yii用户注册表单验证实例
2015/12/26 PHP
WordPress用户登录框密码的隐藏与部分显示技巧
2015/12/31 PHP
php使用curl并发减少后端访问时间的方法分析
2016/05/12 PHP
php设计模式之装饰模式应用案例详解
2019/06/17 PHP
laravel-admin的图片删除实例
2019/09/30 PHP
asp.net和php的区别点总结
2019/10/10 PHP
各情景下元素宽高的获取实现代码
2011/09/13 Javascript
网页源代码保护(禁止右键、复制、另存为、查看源文件)
2012/05/23 Javascript
javascript中全局对象的parseInt()方法使用介绍
2013/12/19 Javascript
JavaScript两种跨域技术全面介绍
2014/04/16 Javascript
返回顶部按钮响应滚动且动态显示与隐藏
2014/10/14 Javascript
jquery制作漂亮的弹出层提示消息特效
2014/12/23 Javascript
详解js中构造流程图的核心技术JsPlumb(2)
2015/12/08 Javascript
jQuery焦点图插件SaySlide
2015/12/21 Javascript
Javascript实现代码折叠功能
2016/08/25 Javascript
jQuery用FormData实现文件上传的方法
2016/11/21 Javascript
浅谈js获取ModelAndView值的问题
2018/03/28 Javascript
jQuery 同时获取多个标签的指定内容并储存为数组
2018/11/20 jQuery
通过JavaScript下载文件到本地的方法(单文件)
2019/03/17 Javascript
使用next.js开发网址缩短服务的方法
2020/06/17 Javascript
跟老齐学Python之Import 模块
2014/10/13 Python
对Python中9种生成新对象的方法总结
2018/05/23 Python
解决python运行效率不高的问题
2020/07/20 Python
人力资源部副职的竞聘演讲稿
2014/01/07 职场文书
构建高效课堂实施方案
2014/03/13 职场文书
马智宇婚礼主持词
2014/03/22 职场文书
颁奖典礼主持词
2014/03/25 职场文书
陈胜吴广起义口号
2014/06/20 职场文书
2015年宣传部部长竞选演讲稿
2014/11/28 职场文书
2015年教师新年寄语
2014/12/08 职场文书
酒店优秀员工推荐信
2015/03/24 职场文书
商场收银员岗位职责
2015/04/07 职场文书
党风廉政承诺书2016
2016/03/25 职场文书
Pandas数据结构之Series的使用
2022/03/31 Python