第二章 python中重要的数据结构(下)
二、元组(tuple):不可变序列
跟list一样,也是一种序列,唯一不同的是,元组元素不能被修改,通常用(, ,)表示元组,也可以不加括号。
#创建元组
>>> 1,2,3
(1, 2, 3)
>>> t = (1,2,3)
>>> t
(1, 2, 3)
#创建空元组
>>> t1 = ()
>>> t1
()
#创建只有一个元素的元组,这里注意必须带上逗号
>>> t2 = (1,)
>>> t2
(1,)
#也可以用tuple()函数创建元组
>>> b = tuple('abc')
>>> b
('a', 'b', 'c')
【访问】:跟list一样,支持索引和分片访问。
【区别】:元组和列表的区别及适用的地方?
1、元组可以充当字典中的键,列表则不可
2、元组不像list那样有内建函数。
三、集合(set)
【定义】:集合是一组无序的不重复的值
>>> basket = {'apple', 'orange', 'apple', 'pear', 'orange', 'banana'}
>>> print(basket) # show that duplicates have been removed
{'orange', 'banana', 'pear', 'apple'}
>>> 'orange' in basket # fast membership testing
True
>>> 'crabgrass' in basket
False >>> # Demonstrate set operations on unique letters from two words
...
>>> a = set('abracadabra')
>>> b = set('alacazam')
>>> a # unique letters in a
{'a', 'r', 'b', 'c', 'd'}
>>> a - b # letters in a but not in b
{'r', 'd', 'b'}
>>> a | b # letters in either a or b
{'a', 'c', 'r', 'd', 'b', 'm', 'z', 'l'}
>>> a & b # letters in both a and b
{'a', 'c'}
>>> a ^ b # letters in a or b but not both
{'r', 'd', 'b', 'm', 'z', 'l'}
四、字典(Dictionaries)
【定义】字典是一组键值对,其中key可以是数字、字符串、元组。
【创建】用大括号表示,key-value结构,键值之间用冒号隔开,不同的键值对之间通过逗号分隔,如下:
>>> dict = {'Tome':'','Helen':''}
>>> dict
{'Tome': '', 'Helen': ''}
>>> dict1 = {}
>>> dict1
{}
【基本操作】
len(dict)返回字典键值对数量
dict[k]返回key为k的值
dict[k]改变key为k的值
del dict[k]删除键为k的项
k in dict检查dict中是否含有键为k的项
1 #!/usr/python
2
3 people = {
4 'Alice':{
5 'phone':'',
6 'addr':'Foo drive 23'
7 },
8
9 'Beth':{
10 'phone':'',
11 'addr':'Bar street 32'
12 },
13
14 'Cecil':{
15 'phone':'',
16 'addr':'Baz avenue 90'
17 }
18
19 }
20
21 labels = {
22 'phone':'phone number',
23 'addr':'address'
24 }
25
26 name = raw_input('Name: ')
27 request = raw_input('Phone number(p) or address(a)? ')
28 if request == 'p':
29 key = 'phone'
30 if request == 'a':
31 key = 'addr'
32
33 if name in people:
34 print "%s's %s is %s." % (name,labels[key],people[name][key])
运行结果:
[root@darren python]# python dict.py
Name: Alice
Phone number(p) or address(a)? p
Alice's phone number is 2341.
【方法】
1、clear()方法:清空字典所有项,原地操作。
>>> x = {}
>>> y = x #并不是简单的赋值,这里可以理解为x,y共同指向一个字典
>>> x['key']='value'
>>> x
{'key': 'value'}
>>> y
{'key': 'value'}
>>> x = {}
>>> x
{}
>>> y
{'key': 'value'}
>>> x = {}
>>> y = x
>>> x['key'] = 'value'
>>> x
{'key': 'value'}
>>> y
{'key': 'value'}
>>> x.clear() #注意clear方法清除原地
>>> x
{}
>>> y
{}
2、copy()方法:返回一个相同值得新字典,浅复制
>>> a = {'username':'admin','machines':['foo','bar']}
>>> b = a.copy()
>>> b['username']='lsls'
>>> b['machines'].remove('bar')
>>> a #替换不能改变值,但是修改可以改变原字典值
{'username': 'admin', 'machines': ['foo']}
可以通过深复制,让原字典保持不变:
>>> from copy import deepcopy
>>> d = {}
>>> d['name'] = ['aa','bb']
>>> c = d.copy()
>>> dc = deepcopy(d)
>>> dc['name'].append('cc')
>>> d
{'name': ['aa', 'bb']}
3、get(key)方法:通过key访问字典值,如果字典不存在key,不会报错,返回none
4、keys()和iterkeys()方法:keys方法将字典中的键以列表形式返回,而iterkeys则返回针对键的迭代器
5、pop(key)方法:删除指定key的键值项
6、popitem()方法:随机删除一个键值项
7、values()和itervalues()方法:values方法将字典中的键以列表形式返回,而itervalues则返回针对键的迭代器
8、update(item)方法:利用一个字典项更新另一个字典
>>> d = {'title':'python study','url':'www.python.com'}
>>> x = {'title':'.net study'}
>>> d.update(x)
>>> d
{'url': 'www.python.com', 'title': '.net study'}
至此,python中常用的数据结构就学习的差不多了。
第二章 python中重要的数据结构(下)的更多相关文章
- [Python笔记][第二章Python序列-复杂的数据结构]
2016/1/27学习内容 第二章 Python序列-复杂的数据结构 堆 import heapq #添加元素进堆 heapq.heappush(heap,n) #小根堆堆顶 heapq.heappo ...
- 第二章python中的一切皆对象
1.函数和类也是对象,属于python的一等公民 赋值给一个变量 可以添加到集合对象之中 可以作为参数传递给函数 可以当作函数的返回值 def ask(name="ask_wzh" ...
- 第一章 python中重要的数据结构(上)
最近,由于工作需要,使用python开发公司的运维自动化平台,所以找本书来并结合官方手册,开始python的学习之旅. 一.列表 [含义]:列表用中括号表示,通过逗号进行分隔一组数据(可以为不同的数据 ...
- [Python笔记][第二章Python序列-tuple,dict,set]
2016/1/27学习内容 第二章 Python序列-tuple tuple创建的tips a_tuple=('a',),要这样创建,而不是a_tuple=('a'),后者是一个创建了一个字符 tup ...
- 第二章Python入门
第二章 Python入门 2.1.简介 Python是著名的"龟叔"(Guido van Rossum)在1989年圣诞节期间,为了打发无聊的圣诞节而编写的一个编程语言 Pytho ...
- [python笔记][第二章Python序列-list]
2016/1/27学习内容 第二章 Python序列-list list常用操作 list.append(x) list.extend(L) list.insert(index,x) list.rem ...
- Python中的高级数据结构详解
这篇文章主要介绍了Python中的高级数据结构详解,本文讲解了Collection.Array.Heapq.Bisect.Weakref.Copy以及Pprint这些数据结构的用法,需要的朋友可以参考 ...
- Python中的高级数据结构(转)
add by zhj: Python中的高级数据结构 数据结构 数据结构的概念很好理解,就是用来将数据组织在一起的结构.换句话说,数据结构是用来存储一系列关联数据的东西.在Python中有四种内建的数 ...
- 《python解释器源码剖析》第4章--python中的list对象
4.0 序 python中的list对象,底层对应的则是PyListObject.如果你熟悉C++,那么会很容易和C++中的list联系起来.但实际上,这个C++中的list大相径庭,反而和STL中的 ...
随机推荐
- tomcat安装配置规范
tomcat用户设置 1 2 [root@host-1 ~]# useradd -u 501 tomcat [root@host-1 ~]# passwd tomcat 安装JDK 1 2 3 4 ...
- nl 命令
nl命令在linux系统中用来计算文件中行号.nl 可以将输出的文件内容自动的加上行号!其默认的结果与 cat -n 有点不太一样, nl 可以将行号做比较多的显示设计,包括位数与是否自动补齐 0 等 ...
- 尽管是一个CS专业的学生,小B的数学基础很好并对数值计算有着特别的兴趣,喜欢用计算机程序来解决数学问题。现在,她正在玩一个数值变换的游戏。她发现计算机中经常用不同的进制表示同一个数,如十进制数123表达为16进制时只包含两位数7、11(B),用八进制表示时为三位数1、7、3。按不同进制表达时,各个位数的和也不同,如上述例子中十六进制和八进制中各位数的和分别是18和11。
include "stdafx.h" #include<iostream> #include<vector> #include <algorithm& ...
- NOJ1167 丑陋数 想法题
题意 丑陋数n的意思是n的全部素数因子仅仅有2,3,5. 求出前1500个丑陋数. (第一个丑陋数是1) 思路 用一个数组维护全部的丑陋数. 一開始数组中仅仅有一个数就是1. 如今能够确定的丑陋数还有 ...
- 【ubantu】在ubantu下如何对svn进行操作命令
ubantu对svn进行操作命令,如下所示: 1.将文件checkout到本地目录svn checkout path(path是服务器上的目录)例如:svn checkout svn://192.16 ...
- 如何玩转最新的项目的搭配springmvc+mybatis+Redis+Nginx+tomcat+mysql
上一次完成nginx+tomcat组合搭配,今天我们就说说,这几个软件在项目中充当的角色: 要想完成这几个软件的组合,我们必须知道和熟悉应用这个框架, 一: Nginx:在项目中大多数作为反向代理服务 ...
- 详解Linux Top 命令
Linux top命令简介 top 命令是最流行的性能监视工具之一,我们必需了解.它是一个优秀的交互式工具,用于监视性能.它提供系统整体性能,但报告进程信息才是 top 命令的长处.top 命令交互界 ...
- Lumen开发:lumen源码解读之初始化(4)——服务提供(ServiceProviders)与路由(Routes)
版权声明:本文为博主原创文章,未经博主允许不得转载. 前面讲了singleton和Middleware,现在来继续讲ServiceProviders和Routes,还是看起始文件bootstrap/a ...
- 圆环自带动画进度条ColorfulRingProgressView
这是项目中遇到了,我也是借鉴大神的, 下载地址:https://github.com/oooohuhu/ColorfulRingProgressView 我把它导入了github中了,里面有详细的使用 ...
- Elasticsearch宕机问题
个人博客:https://blog.sharedata.info/ Elasticsearch 突然宕机,每次重启都只生成错误日志报错信息:## There is insufficient memor ...