Python学习笔记【二】——《python基础教程》:: 列表和元组
来源:互联网 发布:iptables 只开放80端口 编辑:程序博客网 时间:2024/06/08 08:38
第2章 列表和元组
2.1. 序列概述
- python内建序列
1)列表:可修改
2)元组:不可修改
3)字符串
4)Unicode字符串
5)buffer对象
6)xrange对象 - 赋值。序列元素可为数字、字符或其他序列。
>>> edward=['Edward Gumby', 42]>>> john=['John Smith', 50]>>> database=[edward, john]>>> database[['Edward Gumby', 42], ['John Smith', 50]]
2.2. 通用序列操作
索引(indexing)、分片(slicing)、加(adding)、乘(multiplying)、检查某元素是否属于序列(成员资格)、计算序列长度、找出最大和最小元素、迭代(iteration)。
2.2.1. 索引
- 获取某个元素,假设序列名为seq,序列索引用法为seq[n]。
- 索引编号对应关系如下,假设序列长度为N:
- 可见,seq[m] = seq[-(N-m)]。
3.若函数返回序列,可直接对返回结果进行索引。
>>>function()[m]
2.2.2. 分片
- 访问一定范围内元素,假设序列名称为seq,长度为N。
- 隐式步长
- 用法:seq[m:n],提取序列中从第m个元素到第(n-1)个元素
- 索引m之后的所有元素:seq[m:N],索引N为不存在的元素,并在最后一个元素之后
- 空序列:seq[m:n],当索引m比n晚出现在序列中时为空
- 索引m之后的所有元素:seq[m:]
- 索引n之前的所有元素:seq[:n+1]
- 整个序列:seq[:]
- 显式步长:seq[m:n:step]
- 当step>0,m在n之前,从m到n每隔step-1提取一个元素正序显示
- 当step<0,m在n之后,从m到n每个|step|-1提取一个元素反序显示
- m与n的规则与隐式步长定义相同
2.2.3. 序列相加
加号表示序列的连接操作,只有相同类型的序列才能进行连接。
#错误语法>>> [1, 2, 3]+'world'Traceback (most recent call last): File "<stdin>", line 1, in <module>TypeError: can only concatenate list (not "str") to list#正确语法>>> [1, 2, 3]+['world'][1, 2, 3, 'world']
2.2.4. 乘法
用数字x乘以一个序列会生成新序列,新序列内容为将原序列重复x次。
>>> [1, 2, 'abc']*5[1, 2, 'abc', 1, 2, 'abc', 1, 2, 'abc', 1, 2, 'abc', 1, 2, 'abc']
空列表,占用空间但是使用空值(None)来赋值。
>>> sequence=[None]*5>>> sequence[None, None, None, None, None]
2.2.5. 成员资格
布尔运算,运算符 in。以下为常见用法及使用环境。
#检测字符是否在字符串中,例如检测文件权限>>> permission='rw'>>> 'r' in permissionTrue>>> 'x' in permission False#检测字符串是否在字符串中,例如过滤垃圾邮件>>> subject = '$$$ Get rich now!!! $$$'>>> '$$$' in subjectTrue#检测序列元素是否在序列中,例如检测用户是否合法,用于安全策略>>> user=['aaa', 'bbb', 'ccc']>>> raw_input("What's your name: ") in userWhat's your name: abcFalse>>> raw_input("What's your name: ") in userWhat's your name: aaaTrue
2.2.6. 长度、最小值和最大值
len、min和max
2.3. 列表:Python的“苦力”
2.3.1. list函数
list(序列)将“序列”转化为列表
2.3.2. 基本的列表操作
列表适用于所有序列的标准操作(2.2节),下述操作为修改列表方法。
1. 改变列表:元素赋值
- 使用索引为位置明确的元素赋值。
不能为位置不存在的元素赋值。
>>> seq=[None]*3#正确语法>>> seq[2] = 1>>> seq[None, None, 1]#错误语法>>> seq[3] = 2Traceback (most recent call last): File "<stdin>", line 1, in <module>IndexError: list assignment index out of range
2. 删除元素
delete语句。用法如下:
```>>> seq=['aaa', 'bbb','ddd','ddd','eee','fff']>>> del seq[3]>>> seq['aaa', 'bbb', 'ddd', 'eee', 'fff']```
3. 分片赋值
等长替换
>>> seq = list('python')>>> seq[-2:] = list('er')>>> seq['p', 'y', 't', 'h', 'e', 'r']
不等长替换
>>> seq = list('python')>>> seq[-2:] = list('ern')>>> seq['p', 'y', 't', 'h', 'e', 'r', 'n']
插入
>>> seq = list('python')>>> seq[1:1] = list('---')>>> seq['p', '-', '-', '-', 'y', 't', 'h', 'o', 'n']
删除
>>> seq = list('python')>>> seq[1:4] = []>>> seq['p', 'o', 'n']
2.3.3. 列表方法
方法:一个与某些对象(列表、数字、字符串或其他类型对象)有紧密联系的函数。
方法调用:对象.方法 ()
1. append:列表后追加
>>> testlist=[1, 2, 3]>>> testlist.append(10)>>> testlist[1, 2, 3, 10]
2. count:统计某元素在列表中出现次数
>>> ['a', 'b', 'c', 'd', 'e', 'a', 'd', 'c'].count('c')2
3. extend: 在列表后追加另一个序列
>>> a = [1, 2, 3]>>> a.extend([4, 5, 6])>>> a[1, 2, 3, 4, 5, 6]
4. index:从列表中找出某个值第一个匹配项的索引位置。当搜索的值不存在是,触发异常。
>>> testseq = ['Tell', 'me', 'who', 'is', 'talking']>>> testseq.index('who')2>>> testseq.index('whos')Traceback (most recent call last): File "<stdin>", line 1, in <module>ValueError: 'whos' is not in list
5. insert:对象插入到列表中
>>> numbers = [1, 2, 3, 4, 5, 6, 7]>>> numbers.insert(3, 'four')>>> numbers[1, 2, 3, 'four', 4, 5, 6, 7]
6. pop:移除列表中的一个元素(缺省为最后一个),并且返回该元素的值。
>>> testlist = [1, 2, 3]>>> testlist.pop()3>>> testlist.pop(1)2>>> testlist[1]
pop常用于栈的实现。
7. remove:移除列表中某个值得第一个匹配项,没有返回值。若要移除的值不在列表中,会触发异常。
>>> testlist = [1, 2, 3, 4, 5, 6, 7]>>> testlist.remove(4)>>> testlist[1, 2, 3, 5, 6, 7]>>> testlist.remove(4)Traceback (most recent call last): File "<stdin>", line 1, in <module>ValueError: list.remove(x): x not in list
8. reverse:将列表中的元素反响存放,没有返回值。
>>> testlist = [1, 2, 3, 4, 5, 6, 7]>>> testlist.reverse()>>> testlist[7, 6, 5, 4, 3, 2, 1]
9. sort:在原位置对列表进行排序,没有返回值。
>>> testlist = [1, 4, 7, 6, 2, 3, 5]>>> testlist.sort()>>> testlist[1, 2, 3, 4, 5, 6, 7]
保持原列表不变,并获取列表的有序副本方法有二:
>>> x = [1, 4, 7, 6, 2, 3, 5]>>> y = x[:] #不可使用 y=x,该操作将 y 指向 x 所表示的列表;>>> #而 x[:] 是复制整个列表>>> y.sort()>>> x[1, 4, 7, 6, 2, 3, 5]>>> y[1, 2, 3, 4, 5, 6, 7]
使用sorted函数
>>> x = [1, 4, 7, 6, 2, 3, 5]>>> y = sorted(x)>>> x[1, 4, 7, 6, 2, 3, 5]>>> y[1, 2, 3, 4, 5, 6, 7]
2.4. 元组:不可变序列
创建元组:用逗号分割一些值,自动创建元组。
#创建元组>>> 1,2,3(1, 2, 3)>>> (4,5,6)(4, 5, 6)#创建空元组>>> ()()#创建只有一个元素的元组,必须在元素后添加“,”#错误创建示例>>> (2)2#正确创建示例>>> (2,)(2,)
2.4.1. tuple函数
以一个序列为参数并将其转换为元组。
>>> tuple('abc')('a', 'b', 'c')
2.4.2. 基本元组操作
参照其他类型序列。
2.4.3. 那么,意义何在
- 元组可在映射(集合的成员)中作键——列表不行。
- 元组作为很多内建函数和方法的返回值。
阅读全文
0 0
- Python学习笔记【二】——《python基础教程》:: 列表和元组
- Python基础教程笔记——列表和元组
- Python基础教程笔记——列表和元组
- Python基础教程笔记——列表和元组
- 《Python基础教程》学习笔记之[D2]列表和元组
- 《Python基础教程》学习笔记 Chap2 列表和元组
- python基础教程学习笔记 第二章 列表和元组
- Python基础教程学习笔记第二章:列表和元组
- Python基础教程——2列表和元组
- 《Python基础教程》(二)列表和元组
- python学习笔记(二)列表和元组
- Python 学习笔记(二) 列表和元组
- python学习笔记(二)列表和元组
- 第二章-列表和元组——python基础教程(第二版)笔记
- python笔记二-列表和元组
- python学习笔记3——列表和元组
- Python基础教程学习比较----第二章 列表和元组
- Python基础教程-列表和元组
- 【漏洞分析】MS17-010:深入分析“永恒之蓝”漏洞
- Java实现从m个各不相同的元素中取出n个,并进行全排列
- Java 调用Restful API接口的几种方式--HTTPS
- Kotlin入门基础笔记
- BP神经网络
- Python学习笔记【二】——《python基础教程》:: 列表和元组
- Android开发之玩转FlexboxLayout布局(可用于普通控件实现流式布局,也可结合RecycleView实现流式布局)
- jQuery定位图片在页面没有完全加载完成的时候无法居中
- git 一个分支完全替换另一个分支
- 项目部署测试流程
- C#获取另一窗体的默认值
- 【技术分享】自动绑定漏洞和Spring MVC
- Linux Qt程序打包成一个可执行文件
- ICMP详解和实例分析