Python中3种内建数据结构:列表、元组和字典


Posted in Python onNovember 30, 2014

Python中有3种内建的数据结构:列表、元组和字典。参考简明Python教程

1. 列表
list是处理一组有序项目的数据结构,即你可以在一个列表中存储一个 序列 的项目。假想你有一个购物列表,上面记载着你要买的东西,你就容易理解列表了。只不过在你的购物表上,可能每样东西都独自占有一行,而在Python中,你在每个项目之间用逗号分割。

列表中的项目应该包括在方括号中,这样Python就知道你是在指明一个列表。一旦你创建了一个列表,你可以添加、删除或是搜索列表中的项目。由于你可以增加或删除项目,我们说列表是 可变的 数据类型,即这种类型是可以被改变的。
例:

#!/usr/bin/env python
#coding:utf8
 
list = ['Linux', 'Nginx', 'MySQL', 'PHP']
 
print 'These items are:',
for item in list:
print item,
 
print '\nadd Apache.'
list.append('Apache')
print 'list is now', list
 
print '\nI will sort my list now'
list.sort()
print 'Sorted list is %s' % list
 
print '\nThe first item ', list[0]
item0 = list[0]
print 'delete first item'
del list[0]
print 'list is now', list

输出

$python using_list.py
These items are: Linux Nginx MySQL PHP
add Apache.
list is now ['Linux', 'Nginx', 'MySQL', 'PHP', 'Apache']
 
I will sort my list now
Sorted list is ['Apache', 'Linux', 'MySQL', 'Nginx', 'PHP']
 
The first item Apache
delete first item
list is now ['Linux', 'MySQL', 'Nginx', 'PHP']

2. 元组
元组和列表十分类似,只不过元组和字符串一样是 不可变的 即你不能修改元组。元组通过圆括号中用逗号分割的项目定义。元组通常用在使语句或用户定义的函数能够安全地采用一组值的时候,即被使用的元组的值不会改变。
例:

#!/usr/bin/env python
#coding:utf8
 
zoo = ('wolf', 'elephant', 'penguin')
print 'Number of animals in the zoo is', len(zoo)
 
new_zoo = ('monkey', 'dolphin', zoo)
print 'Number of animals in the new zoo is', len(new_zoo)
print 'All animals in new zoo are', new_zoo
print 'Animals brought from old zoo are', new_zoo[2]
print 'Last animal brought from old zoo is', new_zoo[2][2]

输出

$ python using_tuple.py
Number of animals in the zoo is 3
Number of animals in the new zoo is 3
All animals in new zoo are ('monkey', 'dolphin', ('wolf', 'elephant', 'penguin'))
Animals brought from old zoo are ('wolf', 'elephant', 'penguin')
Last animal brought from old zoo is penguin

3. 字典
字典类似于你通过联系人名字查找地址和联系人详细情况的地址簿,即,我们把键(名字)和值(详细情况)联系在一起。注意,键必须是唯一的,就像如果有两个人恰巧同名的话,你无法找到正确的信息。

注意,你只能使用不可变的对象(比如字符串)来作为字典的键,但是你可以不可变或可变的对象作为字典的值。基本说来就是,你应该只使用简单的对象作为键。

键值对在字典中以这样的方式标记:d = {key1 : value1, key2 : value2 }。注意它们的键/值对用冒号分割,而各个对用逗号分割,所有这些都包括在花括号中。

记住字典中的键/值对是没有顺序的。如果你想要一个特定的顺序,那么你应该在使用前自己对它们排序。

字典是dict类的实例/对象。
例:

#!/usr/bin/env python
#coding:utf8
 
contacts = { 'Admin' : 'admin@3water.com',
'Linuxeye' : 'linuxeye@3water.com',
'Support' : 'support@3water.com'
}
 
print "Linuxeye's address is %s" % contacts['Linuxeye']
 
# Adding a key/value pair
contacts['test'] = 'test@3water.com'
 
# Deleting a key/value pair
del contacts['Support']
 
print '\nThere are %d contacts in the address-book\n' % len(contacts)
for name, address in contacts.items():
print 'Contact %s at %s' % (name, address)
 
if contacts.has_key('test'):
print "\ntest's address is %s" % contacts['test']

输出

$ python using_dict.py
Linuxeye's address is linuxeye@3water.com
 
There are 3 contacts in the address-book
 
Contact Admin at admin@3water.com
Contact test at test@3water.com
Contact Linuxeye at linuxeye@3water.com
 
test's address is test@3water.com
Python 相关文章推荐
Python使用MySQLdb for Python操作数据库教程
Oct 11 Python
Python基于Flask框架配置依赖包信息的项目迁移部署
Mar 02 Python
python使用RNN实现文本分类
May 24 Python
centos6.5安装python3.7.1之后无法使用pip的解决方案
Feb 14 Python
Python后台开发Django会话控制的实现
Apr 15 Python
Python3.6实现带有简单界面的有道翻译小程序
Apr 16 Python
用python生成(动态彩色)二维码的方法(使用myqr库实现)
Jun 24 Python
python文件选择对话框的操作方法
Jun 27 Python
Python模拟登录requests.Session应用详解
Nov 17 Python
最新PyCharm 2020.2.3永久激活码(亲测有效)
Nov 26 Python
详解Python中@staticmethod和@classmethod区别及使用示例代码
Dec 14 Python
python 下划线的多种应用场景总结
May 12 Python
Python函数中定义参数的四种方式
Nov 30 #Python
Python 自动补全(vim)
Nov 30 #Python
给Python IDLE加上自动补全和历史功能
Nov 30 #Python
让 python 命令行也可以自动补全
Nov 30 #Python
Python lambda和Python def区别分析
Nov 30 #Python
Python内置函数之filter map reduce介绍
Nov 30 #Python
Python Queue模块详解
Nov 30 #Python
You might like
PHP微框架Dispatch简介
2014/06/12 PHP
PHP Ajax实现无刷新附件上传
2016/08/17 PHP
php使用ftp实现文件上传与下载功能
2017/07/21 PHP
PHP APP微信提现接口代码
2018/09/30 PHP
搭建PhpStorm+PhpStudy开发环境的超详细教程
2020/09/17 PHP
jQuery 位置函数offset,innerWidth,innerHeight,outerWidth,outerHeight,scrollTop,scrollLeft
2010/03/23 Javascript
js和C# 时间日期格式转换的简单实例
2016/05/28 Javascript
模板视图和AngularJS之间冲突的解决方法
2016/11/22 Javascript
jQuery实现标签页效果实战(4)
2017/02/08 Javascript
jQuery+C#实现参数RSA加密传输功能【附jsencrypt.js下载】
2017/06/26 jQuery
浅析Visual Studio Code断点调试Vue
2018/02/27 Javascript
vue-router懒加载速度缓慢问题及解决方法
2018/11/25 Javascript
JavaScript基于遍历操作实现对象深拷贝功能示例
2019/03/05 Javascript
es6函数之严格模式用法实例分析
2020/03/17 Javascript
vue集成openlayers加载geojson并实现点击弹窗教程
2020/09/24 Javascript
[01:05:59]Mineski vs Secret 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.22
2019/09/05 DOTA
利用Python获取赶集网招聘信息前篇
2016/04/18 Python
Python程序中设置HTTP代理
2016/11/06 Python
Pycharm 设置默认头的图文教程
2019/01/17 Python
Python 一键制作微信好友图片墙的方法
2019/05/16 Python
PyQt4编程之让状态栏显示信息的方法
2019/06/18 Python
python笔记之mean()函数实现求取均值的功能代码
2019/07/05 Python
python tkinter实现彩球碰撞屏保
2019/07/30 Python
Python查找不限层级Json数据中某个key或者value的路径方式
2020/02/27 Python
Python3.9 beta2版本发布了,看看这7个新的PEP都是什么
2020/06/10 Python
HTML5对比HTML4的主要改变和改进总结
2016/05/27 HTML / CSS
浅析canvas元素的html尺寸和css尺寸对元素视觉的影响
2019/07/22 HTML / CSS
爱尔兰电子产品购物网站:Komplett.ie
2018/04/04 全球购物
英国鹦鹉店:Parrot Essentials
2018/12/03 全球购物
远程培训的心得体会
2014/09/01 职场文书
处级领导班子全部召开专题民主生活会情况汇报
2014/09/27 职场文书
党员教师群众路线对照检查材料思想汇报
2014/09/29 职场文书
领导干部作风建设工作总结
2014/10/23 职场文书
考博导师推荐信范文
2015/03/27 职场文书
社区低保工作总结2015
2015/07/23 职场文书
使用opencv-python如何打开USB或者笔记本前置摄像头
2022/06/21 Python