Python基础教程学习笔记:第二章 列表和元组
1、序列中元素的索引:
第一个元素索引是0,第二个是1,依次递增
最后一个元素索引是-1,倒数第二个是-2,依次递减
2、序列(Sequence)的种类:
列表(list)、元组(tuple)、字符串(string)、Unicode 字符串、buffer对象、xrange对象
3、列表和元组的区别:列表可以进行修改,但是元组不行
4、tuple常作为字典的键
5、序列都可以进行以下操作:
索引(indexing)、分片(sliceing)、加(adding)、乘(multiplying)、以及检查元素是否属于序列(in)、最大值(max)、最小值(min)、长度(len)、迭代器(iterator)等操作
6、序列中也可以包含其他的序列
7、索引
7.1、第一个元素的索引是0,第二个是1,依次递增;最后一个元素的索引是-1,倒数第二个是-2,依次递减
7.2、对于序列可以直接进行索引,而不是一定非要通过变量进行索引,如:"Hello"[0],得到H
7.3、如果一个函数返回一个序列,可直接对结果进行索引而得到指定的元素
8、分片
访问一定范围内的元素
[start:end:step]:从start索引开始,每隔step个元素取一个元素,但是不包括end元素
[start:end]:从start索引开始,每隔1个元素取一个元素,但是不包括end元素
[start:]:从start索引开始取到结尾,每隔1个元素取一个元素
[:end]:从0开始,每隔1个元素取一个元素,但是不包括end元素
[:]:取所有元素
[::step]:从0开始取到结尾,每隔step个元素取一个元素
[:end:step]:从0开始,每隔step个元素取一个元素,取到end前一个元素
[start::step]:从start开始,取到结尾,步长step
[start:start]:取得start元素
8.1、step > 0 从前往后取;step < 0 从后往前取;step 不能为0
9、相同类型的序列才能相加,第二个序列追加到第一个序列后面,生成新的序列副本
a = [1,2,3,4,5]
b = [4,5,6,7,8]
a + b的结果是:[1, 2, 3, 4, 5, 4, 5, 6, 7, 8];a、b的内容不发生改变
10、序列乘以一个数字N,大小扩展为现在N倍,内容重复N倍,如:
a = [1,2,3,4,5]
a * 5的结果是:[1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5];a的内容不发生改变
11、可以使用in运算符一个对象是否属于一个序列,返回True或者False,例如:
element1 = 1
element2 = 'c'
element3 = "LLO"
sequence1 = [1,2,3,4,5]
sequence2 = "abcdefg"
sequence3 = "HELLOWORLD"
--------
>>> element1 in sequence1
True
>>> element2 in sequence2
True
#下面这个操作在2.3以上的版本才支持
>>> element3 in sequence3
True
12、求最大值、最小值、长度的函数分别是:max()、min()、len()
13、列表
13.1、list函数适用于所有的类型的序列,而不仅仅是字符串:lst = list("Helloworld")
13.2、"".join(lst)将lst转换为字符串
13.3、元素赋值:x=[1,2,3,4,5],x[0] = 5;要赋值的元素必须存在,否则报错;赋值之后将修改指定的元素
13.4、删除元素:names=["alice","beth","ceil","dee-dee","earl"];del names[2];删除指定下标的元素;删除之后将影响列表元素
13.5、分片赋值:name = list("perl")
>>> name = list("perl")
>>> name
['p', 'e', 'r', 'l']
>>> name[2:] = "ar"
>>> name
['p', 'e', 'a', 'r']
>>> name[2:] = "HELLO WORLD"
>>> name
['p', 'e', 'H', 'E', 'L', 'L', 'O', ' ', 'W', 'O', 'R', 'L', 'D']
>>> name[1:1] = list("12345")
>>> name
['p', '1', '2', '3', '4', '5', 'e', 'H', 'E', 'L', 'L', 'O', ' ', 'W', 'O', 'R', 'L', 'D']
>>> name[5:] = []
>>> name
['p', '1', '2', '3', '4']
13.6、列表方法:对象.方法(参数)
13.6.1、append():在列表末尾添加元素你,会修改调用者并且直接返回
>>> a = list("12345")
>>> a
['1', '2', '3', '4', '5']
>>> a.append(6)
>>> a
['1', '2', '3', '4', '5', 6]
13.6.2、count():返回列表的指定元素的个数
>>> a = list("HelloWorld")
>>> a.count('l')
3
13.6.3、extend():追加一个列表到调用者的后面并修改调用者内容
>>> a = list("Hello ")
>>> b = list("World")
>>> a.extend(b)
>>> a
['H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd']
13.6.4、index():指定元素在list中第一次出现的索引,如果元素不存在,会出现错误
>>> a = list("Hello")
>>> a.index("l")
2
13.6.5、insert():插入对象到列表中
>>> a = list("Hello")
>>> a.insert(3,"XINYE")
>>> a
['H', 'e', 'l', 'XINYE', 'l', 'o']
13.6.6、pop():默认弹出最后一个元素,指定一个参数时,删除指定索引的元素,并返回
>>> a = list("Hello")
>>> a.pop()
'o'
>>> a.pop(1)
'e'
>>> a
['H', 'l', 'l']
pop()方法是唯一一个能修改列表并且返回列表元素的方法
13.6.7、常见的数据结构:栈
FIFO:First Input First Output,先入先出:入栈——insert(0,元素);出栈——pop()
LIFO:Last Input First Output,后入先出:入栈——append();出栈——pop(0)
13.6.8、remove():删除列表中第一个匹配项,会修改调用者,但没有返回值,如果删除的元素不存在,则会报错
>>> a = list("HelloWorld")
>>> a
['H', 'e', 'l', 'l', 'o', 'W', 'o', 'r', 'l', 'd']
>>> a.remove("a")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: list.remove(x): x not in list
>>> a.remove("e")
>>> a
['H', 'l', 'l', 'o', 'W', 'o', 'r', 'l', 'd']
13.6.9、reverse():反向存放列表,会修改调用者
>>> a = list("Hello")
>>> a.reverse()
>>> a
['o', 'l', 'l', 'e', 'H']
13.6.10、reversed()函数:反向存储序列,生成副本,不会修改参数内容,但是不会返回列表,而是返回迭代器,使用list()函数可以把迭代器转化为list:list(reversed(list))
>>> a = list("Hello")
>>> reversed(a)
<list_reverseiterator object at 0x0000000002C2F0F0>
>>> a
['H', 'e', 'l', 'l', 'o']
>>> list(reversed(a))
['o', 'l', 'l', 'e', 'H']
13.6.11、sort():改变被排序里诶包,但是不会返回值
>>> a = [4,6,2,1,7,9]
>>> a.sort()
>>> a
[1, 2, 4, 6, 7, 9]
如果不想改变a的内容,只想得到一个副本的排序结果,则需要先生成一个a的副本,然后对这个副本进行排序(副本的生成不能直接赋值哦,因为赋值实际上引用的是同一个对象,只能按照以下的方式):
>>> a = list("hello world")
>>> b = a[:]
>>> b.sort()
>>> a
['h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd']
>>> b
[' ', 'd', 'e', 'h', 'l', 'l', 'l', 'o', 'o', 'r', 'w']
13.6.12、sorted()函数:不修改参数的内容,返回排序的副本
>>> a = list("hello world")
>>> b = sorted(a)
>>> a
['h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd']
>>> b
[' ', 'd', 'e', 'h', 'l', 'l', 'l', 'o', 'o', 'r', 'w']
13.6.13、高级排序:按照特定的方式进行排序
a.按照compare(x,y)的形式自定义一个函数进行排序,这个自定义函数在x<y的时候返回-1;需要的时候返回0;x>y的时候返回1;
默认的系统提供了一个cmp的函数,用来进行排序,遵循在x<y的时候返回-1;需要的时候返回0;x>y的时候返回1的规则(3.0以上不再支持这个内置函数)
b.sort方法支持两个可选参数key和reverse
key制定一个排序的函数和cmp类似,但是这个函数并不会直接用来确定对象的大小,而是为每一个元素创建一个键,然后根据键来排序,例如要按照元素的长度来进行排序,则可以使用len函数来指定
r = ["aardvark","abalone","acme","add","aerate"]
r.sort(key=len)
排序之后r的内容为:['add', 'acme', 'aerate', 'abalone', 'aardvark']
reverse的值为True或者False,来指明是否进行反序排列
>>> x = [2,8,4,6,5,7,9]
>>> x.sort(reverse=True)
>>> x
[9, 8, 7, 6, 5, 4, 2]
以上这些都可以通过sorted()函数进行替换
14、元组:不可改变的序列。如果用逗号分隔开一些值就创建了一个元组,一般都用圆括号括起来
>>> 1,2,3,4,5
(1, 2, 3, 4, 5)
>>> a = 1,2,3
>>> a
(1, 2, 3)
>>> a = (1,)
>>> a
(1,)
如果想要创建一个非空元组,必须使用逗号,哪怕只有一个元素;若要创建空的元组,则直接使用一个()
tuple([1,2,3])、tuple("123")、tuple((1,2,3))把其他的序列转换为元组
元组可以作为映射的键,但是list却不行,这个也是元组的主要应用场合
Python基础教程学习笔记:第二章 列表和元组的更多相关文章
- 《Python基础教程(第二版)》学习笔记 -> 第二章 列表和元组
本章将引入一个新的概念:数据结构. 数据结构是通过某种方式阻止在一起的数据元素的集合,这些数据元素可以是数字或者字符,设置可以是其他数据结构. Python中,最基本的数据结构是序列(Sequence ...
- Python基础教程学习笔记:第一章 基础知识
Python基础教程 第二版 学习笔记 1.python的每一个语句的后面可以添加分号也可以不添加分号:在一行有多条语句的时候,必须使用分号加以区分 2.查看Python版本号,在Dos窗口中输入“p ...
- 【学习笔记】Python基础教程学习笔记
教程视频网盘共享:http://pan.baidu.com/s/1hrTrR5E 03-python基础.if判断 print 输出数据 print("hahahah")----- ...
- 小甲鱼零基础汇编语言学习笔记第二章之寄存器(CPU工作原理,CPU内部通讯)
这一章主要介绍了CPU中的重要器件——寄存器,整个系列通篇是以8086CPU作为探讨对象,其它更高级的CPU都是在此基础之上进行的升级. 1.一个典型的CPU是由运算器.控制器.寄存器等器件组成, ...
- Python基础教程之第2章 列表和元组
D:\>python Python 2.7.5 (default, May 15 2013, 22:43:36) [MSC v.1500 32 bit (Intel)] on win32 Typ ...
- python学习笔记之一:列表与元组
最近在看<python基础教程>(基于python2.x),下面总结一下第二章列表与元组的知识: 在这章中引入了数据结构的概念.数据结构是通过某种方式组织在一起的数据元素的集合.在pyth ...
- The Road to learn React书籍学习笔记(第二章)
The Road to learn React书籍学习笔记(第二章) 组件的内部状态 组件的内部状态也称为局部状态,允许保存.修改和删除在组件内部的属性,使用ES6类组件可以在构造函数中初始化组件的状 ...
- 《DOM Scripting》学习笔记-——第二章 js语法
<Dom Scripting>学习笔记 第二章 Javascript语法 本章内容: 1.语句. 2.变量和数组. 3.运算符. 4.条件语句和循环语句. 5.函数和对象. 语句(stat ...
- [HeadFrist-HTMLCSS学习笔记]第二章深入了解超文本:认识HTML中的“HT”
[HeadFrist-HTMLCSS学习笔记]第二章深入了解超文本:认识HTML中的"HT" 敲黑板!!! 创建HTML超链接 <a>链接文本(此处会有下划线,可以单击 ...
随机推荐
- QPushButton取消按压后文字下沉效果
1.下沉原因 1.1.QPushButton源码 void QPushButton::initStyleOption(QStyleOptionButton *option) const { if (d ...
- PHP调用JAVA的WebService简单实例
使用PHP调用JAVA语言开发的WebService.客户端提交两个String类型的参数,服务端返回一个对象类型.服务端使用AXIS-1.4作为SOAP引擎.客户端为PHP5.2.9,使用NuSOA ...
- Java instanceof的进一步理解
instanceof是Java的一个二元操作符,和==,>,<是同一类东东.由于它是由字母组成的,所以也是Java的保留关键字.它的作用是测试它左边的对象是否是它右边的类的实例,返回boo ...
- JQuery控制radio选中和不选中方法总结
一.设置选中方法 代码如下: $("input[name='名字']").get(0).checked=true; $("input[name='名字']"). ...
- python进行数据分析------相关分析
相关分析 import statsmodels.api as sm import pandas as pd import numpy as np from patsy.highlevel import ...
- jsp页面利用JS做即时时间显示
想给系统多些点缀,顺便把知识点温习一遍,不过讲真,这些都是网上扒的!我的水平现在也就这样 <%@page import="javax.xml.crypto.Data"%> ...
- HttpComponents-Core 学习
HttpComponents-Core 学习 官方文档:http://hc.apache.org/httpcomponents-core-4.4.x/tutorial/html/index.html ...
- Apache Flume 学习
Apache Flume,又称Flume NG (next generation),前身是Cloudera公司的Flume项目 -- 又称Flume OG. 这货的功能就是从源中将数据收集到指定的目的 ...
- Batch normalization:accelerating deep network training by reducing internal covariate shift的笔记
说实话,这篇paper看了很久,,到现在对里面的一些东西还不是很好的理解. 下面是我的理解,当同行看到的话,留言交流交流啊!!!!! 这篇文章的中心点:围绕着如何降低 internal covari ...
- 目标检测之dpm---hog的最优升级版
http://blog.csdn.net/ttransposition/article/details/12966521 http://blog.csdn.net/carson2005/article ...