第二章 python中重要的数据结构(下)

二、元组(tuple):不可变序列 

跟list一样,也是一种序列,唯一不同的是,元组元素不能被修改,通常用(, ,)表示元组,也可以不加括号。

 1 #创建元组
 2 >>> 1,2,3
 3 (1, 2, 3)
 4 >>> t = (1,2,3)
 5 >>> t
 6 (1, 2, 3)
 7 #创建空元组
 8 >>> t1 = ()
 9 >>> t1
10 ()
11 #创建只有一个元素的元组,这里注意必须带上逗号
12 >>> t2 = (1,)
13 >>> t2
14 (1,)
15 #也可以用tuple()函数创建元组
16 >>> b = tuple(‘abc‘)
17 >>> b
18 (‘a‘, ‘b‘, ‘c‘)

【访问】:跟list一样,支持索引和分片访问。

【区别】:元组和列表的区别及适用的地方?

  1、元组可以充当字典中的键,列表则不可

  2、元组不像list那样有内建函数。

三、集合(set) 

【定义】:集合是一组无序的不重复的值

 1 >>> basket = {‘apple‘, ‘orange‘, ‘apple‘, ‘pear‘, ‘orange‘, ‘banana‘}
 2 >>> print(basket)                      # show that duplicates have been removed
 3 {‘orange‘, ‘banana‘, ‘pear‘, ‘apple‘}
 4 >>> ‘orange‘ in basket                 # fast membership testing
 5 True
 6 >>> ‘crabgrass‘ in basket
 7 False
 8
 9 >>> # Demonstrate set operations on unique letters from two words
10 ...
11 >>> a = set(‘abracadabra‘)
12 >>> b = set(‘alacazam‘)
13 >>> a                                  # unique letters in a
14 {‘a‘, ‘r‘, ‘b‘, ‘c‘, ‘d‘}
15 >>> a - b                              # letters in a but not in b
16 {‘r‘, ‘d‘, ‘b‘}
17 >>> a | b                              # letters in either a or b
18 {‘a‘, ‘c‘, ‘r‘, ‘d‘, ‘b‘, ‘m‘, ‘z‘, ‘l‘}
19 >>> a & b                              # letters in both a and b
20 {‘a‘, ‘c‘}
21 >>> a ^ b                              # letters in a or b but not both
22 {‘r‘, ‘d‘, ‘b‘, ‘m‘, ‘z‘, ‘l‘}

四、字典(Dictionaries) 

【定义】字典是一组键值对,其中key可以是数字、字符串、元组。

【创建】用大括号表示,key-value结构,键值之间用冒号隔开,不同的键值对之间通过逗号分隔,如下:

1 >>> dict = {‘Tome‘:‘1341‘,‘Helen‘:‘2030‘}
2 >>> dict
3 {‘Tome‘: ‘1341‘, ‘Helen‘: ‘2030‘}
4 >>> dict1 = {}
5 >>> dict1
6 {}

【基本操作】

  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‘:‘2341‘,
  6         ‘addr‘:‘Foo drive 23‘
  7     },
  8
  9     ‘Beth‘:{
 10         ‘phone‘:‘2003‘,
 11         ‘addr‘:‘Bar street 32‘
 12     },
 13
 14     ‘Cecil‘:{
 15         ‘phone‘:‘3212‘,
 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])

运行结果:

1 [[email protected] python]# python dict.py
2 Name: Alice
3 Phone number(p) or address(a)? p
4 Alice‘s phone number is 2341.

【方法】

 1、clear()方法:清空字典所有项,原地操作。

 1 >>> x = {}
 2 >>> y = x #并不是简单的赋值,这里可以理解为x,y共同指向一个字典
 3 >>> x[‘key‘]=‘value‘
 4 >>> x
 5 {‘key‘: ‘value‘}
 6 >>> y
 7 {‘key‘: ‘value‘}
 8 >>> x = {}
 9 >>> x
10 {}
11 >>> y
12 {‘key‘: ‘value‘}
 1 >>> x = {}
 2 >>> y = x
 3 >>> x[‘key‘] = ‘value‘
 4 >>> x
 5 {‘key‘: ‘value‘}
 6 >>> y
 7 {‘key‘: ‘value‘}
 8 >>> x.clear() #注意clear方法清除原地
 9 >>> x
10 {}
11 >>> y
12 {}

2、copy()方法:返回一个相同值得新字典,浅复制

1 >>> a = {‘username‘:‘admin‘,‘machines‘:[‘foo‘,‘bar‘]}
2 >>> b = a.copy()
3 >>> b[‘username‘]=‘lsls‘
4 >>> b[‘machines‘].remove(‘bar‘)
5 >>> a          #替换不能改变值,但是修改可以改变原字典值
6 {‘username‘: ‘admin‘, ‘machines‘: [‘foo‘]} 

可以通过深复制,让原字典保持不变:

1 >>> from copy import deepcopy
2 >>> d = {}
3 >>> d[‘name‘] = [‘aa‘,‘bb‘]
4 >>> c = d.copy()
5 >>> dc = deepcopy(d)
6 >>> dc[‘name‘].append(‘cc‘)
7 >>> d
8 {‘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)方法:利用一个字典项更新另一个字典

1 >>> d = {‘title‘:‘python study‘,‘url‘:‘www.python.com‘}
2 >>> x = {‘title‘:‘.net study‘}
3 >>> d.update(x)
4 >>> d
5 {‘url‘: ‘www.python.com‘, ‘title‘: ‘.net study‘}

至此,python中常用的数据结构就学习的差不多了。

   

时间: 2024-08-04 10:06:19

第二章 python中重要的数据结构(下)的相关文章

第一章 python中重要的数据结构(上)

最近,由于工作需要,使用python开发公司的运维自动化平台,所以找本书来并结合官方手册,开始python的学习之旅. 一.列表 [含义]:列表用中括号表示,通过逗号进行分隔一组数据(可以为不同的数据类型),如以下的声明: 1 >>> language = ['chinese','english','japanese'] 2 >>> contries = ['China','Amercia','England','Japan'] 3 4 >>> edw

第二章Python入门

第二章 Python入门 2.1.简介 Python是著名的"龟叔"(Guido van Rossum)在1989年圣诞节期间,为了打发无聊的圣诞节而编写的一个编程语言 Python的哲学就是简单优雅,尽量写容易看明白的代码,尽量写少的代码.为我们提供了非常完善的基础代码库,覆盖了网络.文件.GUI.数据库.文本等大量内容, 2.1.1.Python适合开发哪些类型的应用呢? 云计算 机器学习 科学运算 自动化运维 自动化测试 爬虫 数据分析 GUI图形化 Web开发等 2.1.2.P

Python学习(一):入门篇:python中的一些数据结构

Python里的一些基本知识点总结 Last Edit 2014/5/2 这里记录的是Python2.7版本的语法特征,部分与Python3.0是不一样的. 一,关于开发环境 在windows下可以直接在官网下载相关的版本,然后默认安装.使用直带的IDLE编辑器. IDLE中两个有用的快捷键: ALT+P:重复历史命令(从最近到最老) ALT+N:   重复历史命令(从最老到最近) IDLE中没有清屏功能. 在cmd中进行: 1,首先要在环境变量的path中添加相关的路径: C:\Python2

Python中的高级数据结构(转)

add by zhj: Python中的高级数据结构 数据结构 数据结构的概念很好理解,就是用来将数据组织在一起的结构.换句话说,数据结构是用来存储一系列关联数据的东西.在Python中有四种内建的数据 结构,分别是List.Tuple.Dictionary以及Set.大部分的应用程序不需要其他类型的数据结构,但若是真需要也有很多高级数据结构可供 选择,例如Collection.Array.Heapq.Bisect.Weakref.Copy以及Pprint.本文将介绍这些数据结构的用法,看 看它

Python中的高级数据结构详解

这篇文章主要介绍了Python中的高级数据结构详解,本文讲解了Collection.Array.Heapq.Bisect.Weakref.Copy以及Pprint这些数据结构的用法,需要的朋友可以参考下 数据结构 数据结构的概念很好理解,就是用来将数据组织在一起的结构.换句话说,数据结构是用来存储一系列关联数据的东西.在Python中有四种内建的数据结构,分别是List.Tuple.Dictionary以及Set.大部分的应用程序不需要其他类型的数据结构,但若是真需要也有很多高级数据结构可供选择

0526.第二章:时间复杂度和空间复杂度[数据结构]

参考:本文为小甲鱼教学视频的学习笔记. 1.为什么要学习时间复杂度和空间复杂度?你说一个算法好另外一个算法不好,有什么判断依据?哪个算法效率高?怎么判断?那么就要学习时间和空间复杂度了. 思考:学习每一个知识之前都应该要考虑一下为什么要学习,学了有什么用处,什么场景下去用. 2.算法的效率高一般是指算法的执行时间,度量一个算法的执行时间有2种方式: 事后统计法:需要编写测试程序,万一不好花费大量的时间精力,赔了娘子又折兵(并且测试环境不同差别不是一般的大) 事前统计法:程序编写前,使用统计方法对

[Head First Python] - 第二章 python of comment

1- 多行注释 ''' ''' 或 """ """ '''this is the standard way to include a multiple-line comment in you code''' """this is the standard way to include a multiple-line comment in you code""" 2- 单行注释 # # t

《python解释器源码剖析》第4章--python中的list对象

4.0 序 python中的list对象,底层对应的则是PyListObject.如果你熟悉C++,那么会很容易和C++中的list联系起来.但实际上,这个C++中的list大相径庭,反而和STL中的vector比较类似 4.1 PyListObject对象 我们知道python里面的list对象是支持对元素进行增删改查等操作的,list对象里面存储的,底层无一例外都是PyObject * 指针.所以实际上我们可以这样看待python底层的PyListObject:vector<PyObject

第二章 Python基础知识

第1章 第一个Pyhton程序 Pyhton的两种执行方式:交互式与脚本文件 1.1 交互式 l  交互式模式 直接在Windows或者Linux环境下打开Python解释器执行. 优点:快捷,调试方便. 缺点:不能够保存代码. C:\Users\cc>python3 Python 3.6.2 (v3.6.2:5fd33b5, Jul  8 2017, 04:57:36) [MSC v.1900 64 bit (AMD64)] on win32 Type "help", &quo