最近,由于工作需要,使用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中重要的数据结构(上)的更多相关文章

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

    二.元组(tuple):不可变序列 跟list一样,也是一种序列,唯一不同的是,元组元素不能被修改,通常用(, ,)表示元组,也可以不加括号. #创建元组 >>> 1,2,3 (1, ...

  2. Python中的高级数据结构详解

    这篇文章主要介绍了Python中的高级数据结构详解,本文讲解了Collection.Array.Heapq.Bisect.Weakref.Copy以及Pprint这些数据结构的用法,需要的朋友可以参考 ...

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

    add by zhj: Python中的高级数据结构 数据结构 数据结构的概念很好理解,就是用来将数据组织在一起的结构.换句话说,数据结构是用来存储一系列关联数据的东西.在Python中有四种内建的数 ...

  4. [Python笔记][第一章Python基础]

    2016/1/27学习内容 第一章 Python基础 Python内置函数 见Python内置函数.md del命令 显式删除操作,列表中也可以使用. 基本输入输出 input() 读入进来永远是字符 ...

  5. 《Deep Learning》译文 第一章 前言(中) 神经网络的变迁与称谓的更迭

    转载请注明出处. 第一章 前言(中) 1.1 本书适合哪些人阅读? 能够说本书的受众目标比較广泛,可是本书可能更适合于例如以下的两类人群.一类是学习过与机器学习相关课程的大学生们(本科生或者研究生). ...

  6. 《python解释器源码剖析》第2章--python中的int对象

    2.0 序 在所有的python内建对象中,整数对象是最简单的对象.从对python对象机制的剖析来看,整数对象是一个非常好的切入点.那么下面就开始剖析整数对象的实现机制 2.1 初识PyLongOb ...

  7. [Python笔记][第二章Python序列-复杂的数据结构]

    2016/1/27学习内容 第二章 Python序列-复杂的数据结构 堆 import heapq #添加元素进堆 heapq.heappush(heap,n) #小根堆堆顶 heapq.heappo ...

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

    4.0 序 python中的list对象,底层对应的则是PyListObject.如果你熟悉C++,那么会很容易和C++中的list联系起来.但实际上,这个C++中的list大相径庭,反而和STL中的 ...

  9. 《python解释器源码剖析》第7章--python中的set对象

    7.0 序 集合和字典一样,都是性能非常高效的数据结构,性能高效的原因就在于底层使用了哈希表.因此集合和字典的原理本质上是一样的,都是把值映射成索引,通过索引去查找. 7.1 PySetObject ...

随机推荐

  1. Spring 应用外部属性文件 配置 context 错误

    在Spring配置文件中出现通配符的匹配很全面, 但无法找到元素 'context:property-placeholder' 的声明这个错误,其实主要是我们在引入命名空间时没有正确引入它的DTD解析 ...

  2. matplotlib表面三维图

    1.basic numpy.meshgrid 由一维数组到二维数组,用于生成网格数据 matplotlib python绘图库 2.code In [88]: from mpl_toolkits.mp ...

  3. IBM Rational AppScan使用详细说明

    转自:http://www.nxadmin.com/tools/675.html 本文将详细介绍Appscan功能选项设置的细节,适合E文一般,初次接触Appscan的童鞋参考阅读. Appscan是 ...

  4. nodejs 学习资料大全

    1.blog学习篇 http://blog.fens.me/series-nodejs/ 从零开始nodejs系列文章

  5. Vue+原生App混合开发手记#1

    项目的大致需求就是做一个App,里面集成各种功能供用户使用,其中涉及到很多Vue的使用方法,单独总结太麻烦,所以通过这几篇笔记来梳理一下.原型图如下: 路由配置 主界面会用到一些原生App方法,比如验 ...

  6. Mybatis_遇到的问题汇总

    1.The setting logImpl is not known 我在参考某个网站学习mybatis时,出现这个错误,后来找到的原因是因为mybatis的版本(3.1.1)太低,换成3.3.1就没 ...

  7. java.lang.IllegalArgumentException: Request header is too large的解决方法

    <Connector port="8080" protocol="HTTP/1.1"               connectionTimeout=&q ...

  8. SQL之经典语句

    一.基础 1.说明:创建数据库 CREATE DATABASE database-name 2.说明:删除数据库 drop database dbname 3.说明:备份sql server --- ...

  9. 【Mac + Python】苹果系统之安装Python3.6.x环境

    一.打开终端 输入:uname -a  ,查看电脑系统位数. 输入:python,查看mac系统python版本. 二.为了以后切换版本方便,安装pyenv进行版本切换以及升级. 参考文章:<M ...

  10. 取消eclipse js验证

    去掉Eclipse中的Validating 最近我的Eclipse一直经常效验javascript,我疯了校验了一个多小时还是在验.我只能在项目的.project文件中: 去掉.project文件中的 ...