第一章 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 ...
随机推荐
- <交流贴>android语音识别之科大讯飞语音API的使用
因为最近在研究语音识别,所以借鉴了一下CreAmazing网友的帖子 Android系统本身其实提供有语音识别模块,在它的APIDemo里也有关于语音识别的sample,不过经过大多开发者的真机测 ...
- map端join
package my.hadoop.hdfs.mapreduceJoin; import java.io.BufferedReader; import java.io.FileInputStream; ...
- 通过google地图的webservice根据城市名称获取经纬度
谷歌Geocoding webservice接口获取经纬度信息,由于获取地点的数量级太大,2000多条记录,从response的xml格式中取出该地点的经纬度信息.google有访问限制,如果超出25 ...
- bzoj3992【SDOI2015】序列统计
3992: [SDOI2015]序列统计 Time Limit: 30 Sec Memory Limit: 128 MB Submit: 673 Solved: 327 [Submit][Stat ...
- Python爬上不得姐 并将段子写入数据库
#Python2.7 可以优化一下 前10页 每页点赞最多的段子 百思不得姐 # -*- coding: utf-8 -*-import MySQLdbimport urllib,urllib2imp ...
- SVN版本号控制软件-图片含义具体解释
转载请注明出处:http://blog.csdn.net/zhuwentao2150/article/details/51195154 自己定义SVN图标显示风格 SVN的图标是能够自己定义风格的 右 ...
- php函数unserialize数据返回false问题分析
unserialize的这个问题是由一个emlog论坛用户在使用时报错而发现的 问题表现情况如下: emlog缓存的保存方式是将php的数据对象(数组)序列化(serialize)后以文件的形式存放, ...
- 洛谷P1038 神经网络==codevs1088 神经网络
P1038 神经网络 题目背景 人工神经网络(Artificial Neural Network)是一种新兴的具有自我学习能力的计算系统,在模式识别.函数逼近及贷款风险评估等诸多领域有广泛的应用.对神 ...
- Angular中的$cacheFactory的作用和用法
1.Angular中的$cacheFactory的作用: (1)put(key,value); 在缓存对象中插入一个键值对(key,value). (2)get(key); 在缓存对象中通过指定 ...
- intellij idea 自动生成setter getter
windows下: alt + insert,然后选择要生成的成员. mac下: command + N