第一章 python中重要的数据结构(上)
最近,由于工作需要,使用python开发公司的运维自动化平台,所以找本书来并结合官方手册,开始python的学习之旅。
一、列表
【含义】:列表用中括号表示,通过逗号进行分隔一组数据(可以为不同的数据类型),如以下的声明:
>>> language = ['chinese','english','japanese']
>>> contries = ['China','Amercia','England','Japan'] >>> edward = ['Edward Gumby',42] #不同的数据类型
>>> john = ['John Smith',50]
>>> database = [edward,john] #列表可以嵌套
【操作】:访问、插入、删除、求最大值最小值及长度等
1、访问:可以通过索引或分片进行列表的遍历访问,索引可以访问某个位置的值,分片可以灵活的访问一定范围的值,如下所示:
>>> language = ['chinese','english','japanese']
# 索引访问
>>> language[0]
'chinese' # 分片访问
# 第一个索引元素包括在分片中,第二个索引不包括在分片中
# 可以设置分片的步长
>>> language[::]
['chinese', 'english', 'japanese']
>>> language[0:3]
['chinese', 'english', 'japanese']
>>> language[0:2]
['chinese', 'english']
>>> language[1:2]
['english']
# 设置步长为2
>>> num = [1,2,3,4,5,6,7,8,9]
>>> num[0:9:2]
[1, 3, 5, 7, 9] 21 >>> num = [1, 2, 3]
22 >>> max(num)
23 3
24 >>> min(num)
25 1
26 >>> len(num)
27 3
2、修改、插入和删除操作,由此看来列表是可以进行修改的。
#修改列表某个元素:索引赋值
>>> num = [1,2,3]
>>> num[0]=5 #必须为存在的位置索引赋值,否则报错
>>> num
[5, 2, 3] #修改列表某段范围的值:分片赋值
>>> num[2:]=[6,7,9] #分片赋值元素个数可以不等长
>>> num
[5, 2, 6, 7, 9] #删除某个元素
>>> del num[4]
>>> num
[5, 2, 6, 7]
【方法】对于列表,python内置了诸多方法供操作,主要常用的有以下几个:
#append方法:用于在列表最后添加元素,该方法直接修改原列表并返回修改完后的新列表
>>> str = ['a','b','c','d']
>>> str.append('e')
>>> str
['a', 'b', 'c', 'd', 'e'] #count方法:统计某个元素在列表中出现的次数
>>> str = ['a','b','c','d']
>>> str.count('a')
1 #extend方法:list.extend(L),L指的是列表对象
#用另一个列表扩展一个列表,相当于两个列表连接,
#但是又不同于连接操作,因为extend方法直接修改原列表并返回,
#连接操作不影响原有的列表值
>>> str1 = ['hello,']
>>> str2 = ['world']
>>> str1.extend(str2)
>>> str1
['hello,', 'world'] >>> str3 = ['a']
>>> str4 = ['']
>>> str3 = str3+str4 #效率没有extend高
>>> str3
['a', ''] #index方法:返回匹配项的第一个索引位置
>>> knight = ['we','you','we','me','he']
>>> knight.index('we')
0 #insert方法:list.insert(i, x)插入x到该i位置
>>> knight.insert(1,'she')
>>> knight
['we', 'she', 'you', 'we', 'me', 'he'] #remove方法:list.remove(x)
#删除列表中为X的第一个出现元素
>>> knight = ['we', 'she', 'you', 'we', 'me', 'he']
>>> knight.remove('we')
>>> knight
['she', 'you', 'we', 'me', 'he'] #reverse方法:将元素倒序存储
>>> str = ['a', 'b']
>>> str.reverse()
>>> str
['b', 'a'] #sort方法:list.sort(key=None, reverse=False)
#直接改变原列表顺序,而不是改变副本,对于这种需求如
#仅仅对副本进行排序,不改变原列表不能直接用sort
>>> num = [1,3,2,4]
>>> num.sort()
>>> num
[1, 2, 3, 4] #pop方法:list.pop([i])
#删除指定索引位置的元素值,并返回该值
>>> num = [1, 2, 3, 4]
>>> num.pop(3)
4
【常用举例】:模拟实现堆栈操作和队列操作
堆栈:后进先出
>>> stack = [3, 4, 5]
>>> stack.append(6)
>>> stack.append(7)
>>> stack
[3, 4, 5, 6, 7]
>>> stack.pop()
7
>>> stack
[3, 4, 5, 6]
>>> stack.pop()
6
>>> stack.pop()
5
>>> stack
[3, 4]
队列:先进先出
>>> from collections import deque
>>> queue = deque(["Eric", "John", "Michael"])
>>> queue.append("Terry") # Terry arrives
>>> queue.append("Graham") # Graham arrives
>>> queue.popleft() # The first to arrive now leaves
'Eric'
>>> queue.popleft() # The second to arrive now leaves
'John'
>>> queue # Remaining queue in order of arrival
deque(['Michael', 'Terry', 'Graham'])
第一章 python中重要的数据结构(上)的更多相关文章
- 第二章 python中重要的数据结构(下)
二.元组(tuple):不可变序列 跟list一样,也是一种序列,唯一不同的是,元组元素不能被修改,通常用(, ,)表示元组,也可以不加括号. #创建元组 >>> 1,2,3 (1, ...
- Python中的高级数据结构详解
这篇文章主要介绍了Python中的高级数据结构详解,本文讲解了Collection.Array.Heapq.Bisect.Weakref.Copy以及Pprint这些数据结构的用法,需要的朋友可以参考 ...
- Python中的高级数据结构(转)
add by zhj: Python中的高级数据结构 数据结构 数据结构的概念很好理解,就是用来将数据组织在一起的结构.换句话说,数据结构是用来存储一系列关联数据的东西.在Python中有四种内建的数 ...
- [Python笔记][第一章Python基础]
2016/1/27学习内容 第一章 Python基础 Python内置函数 见Python内置函数.md del命令 显式删除操作,列表中也可以使用. 基本输入输出 input() 读入进来永远是字符 ...
- 《Deep Learning》译文 第一章 前言(中) 神经网络的变迁与称谓的更迭
转载请注明出处. 第一章 前言(中) 1.1 本书适合哪些人阅读? 能够说本书的受众目标比較广泛,可是本书可能更适合于例如以下的两类人群.一类是学习过与机器学习相关课程的大学生们(本科生或者研究生). ...
- 《python解释器源码剖析》第2章--python中的int对象
2.0 序 在所有的python内建对象中,整数对象是最简单的对象.从对python对象机制的剖析来看,整数对象是一个非常好的切入点.那么下面就开始剖析整数对象的实现机制 2.1 初识PyLongOb ...
- [Python笔记][第二章Python序列-复杂的数据结构]
2016/1/27学习内容 第二章 Python序列-复杂的数据结构 堆 import heapq #添加元素进堆 heapq.heappush(heap,n) #小根堆堆顶 heapq.heappo ...
- 《python解释器源码剖析》第4章--python中的list对象
4.0 序 python中的list对象,底层对应的则是PyListObject.如果你熟悉C++,那么会很容易和C++中的list联系起来.但实际上,这个C++中的list大相径庭,反而和STL中的 ...
- 《python解释器源码剖析》第7章--python中的set对象
7.0 序 集合和字典一样,都是性能非常高效的数据结构,性能高效的原因就在于底层使用了哈希表.因此集合和字典的原理本质上是一样的,都是把值映射成索引,通过索引去查找. 7.1 PySetObject ...
随机推荐
- SSH项目web.xml文件的常用配置【struts2的过滤器、spring监听器、解决Hibernate延迟加载问题的过滤器、解决中文乱码的过滤器】
配置web.xml(struts2的过滤器.spring监听器.解决Hibernate延迟加载问题的过滤器.解决中文乱码的过滤器) <!-- 解决中文乱码问题 --> <filter ...
- libpointmatcher的filter
Maximum Density Filter Points are only considered for rejection if they exceed a density threshold, ...
- CALayer的contentsRect
contentsRect 想像下contentsRect作为层内容的可视区域.内容的矩形区域(x,y,width,height)也是绑定到层的框架上的.contentRect是一个比例值,而不是屏幕上 ...
- PHP面试题及答案解析(2)—PHP面向对象
1. 写出 php 的 public.protected.private 三种访问控制模式的区别. public:公有,任何地方都可以访问protected:继承,只能在本类或子类中访问,在其它地方不 ...
- es快照和备份
注册前要注意配置文件加上 path.repo: ["/data/es_backup"] 然后重启es 不然会报错doesn't match any of the locations ...
- Hadoop 中的 ArrayWritable
虽然ArrayWritable不是接口,但貌似必须要子类去extends ArrayWritable,不能直接用ArrayWriable 否则会报下面的错误?(不是很确定) java.lang.Exc ...
- Python内置函数之staticmethod()
staticmethod(function)返回函数的静态方法.一般来说,实例对象调用类方法不用传入参数,因为实例对象本身隐式的作为第一个参数传入了.而采用静态方法之后,实例对象在调用类方法时必须传入 ...
- Unity3d 实现鼠标左键点击地形使角色移动到指定地点[脚本]
Unity3d 实现鼠标左键点击地形使角色移动到指定地点[脚本] 2013-02-19 15:29:33 我来说两句 作者:nnsword 收藏 我要投稿 其中涉及,移动速度, ...
- 在集群中使用文件加载graph
从hdfs上加载文件并创建graph scala> var graphs = GraphLoader.edgeListFile(sc,"/tmp/dataTest/graphTest. ...
- 动态注册HttpModule管道,实现global.asax功能
1.所用类库有 Microsoft.Web.Infrastructure.dll 和WebActivator.dll 2.类代码如下 using System; using System.Collec ...