最近,由于工作需要,使用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. <交流贴>android语音识别之科大讯飞语音API的使用

      因为最近在研究语音识别,所以借鉴了一下CreAmazing网友的帖子 Android系统本身其实提供有语音识别模块,在它的APIDemo里也有关于语音识别的sample,不过经过大多开发者的真机测 ...

  2. map端join

    package my.hadoop.hdfs.mapreduceJoin; import java.io.BufferedReader; import java.io.FileInputStream; ...

  3. 通过google地图的webservice根据城市名称获取经纬度

    谷歌Geocoding webservice接口获取经纬度信息,由于获取地点的数量级太大,2000多条记录,从response的xml格式中取出该地点的经纬度信息.google有访问限制,如果超出25 ...

  4. bzoj3992【SDOI2015】序列统计

    3992: [SDOI2015]序列统计 Time Limit: 30 Sec  Memory Limit: 128 MB Submit: 673  Solved: 327 [Submit][Stat ...

  5. Python爬上不得姐 并将段子写入数据库

    #Python2.7 可以优化一下 前10页 每页点赞最多的段子 百思不得姐 # -*- coding: utf-8 -*-import MySQLdbimport urllib,urllib2imp ...

  6. SVN版本号控制软件-图片含义具体解释

    转载请注明出处:http://blog.csdn.net/zhuwentao2150/article/details/51195154 自己定义SVN图标显示风格 SVN的图标是能够自己定义风格的 右 ...

  7. php函数unserialize数据返回false问题分析

    unserialize的这个问题是由一个emlog论坛用户在使用时报错而发现的 问题表现情况如下: emlog缓存的保存方式是将php的数据对象(数组)序列化(serialize)后以文件的形式存放, ...

  8. 洛谷P1038 神经网络==codevs1088 神经网络

    P1038 神经网络 题目背景 人工神经网络(Artificial Neural Network)是一种新兴的具有自我学习能力的计算系统,在模式识别.函数逼近及贷款风险评估等诸多领域有广泛的应用.对神 ...

  9. Angular中的$cacheFactory的作用和用法

    1.Angular中的$cacheFactory的作用:    (1)put(key,value); 在缓存对象中插入一个键值对(key,value). (2)get(key); 在缓存对象中通过指定 ...

  10. intellij idea 自动生成setter getter

    windows下: alt + insert,然后选择要生成的成员. mac下: command + N