Python学习笔记整理(五)Python中的列表.
列表和字段,这两种类型几乎是Python所有脚本的主要工作组件。他们都可以在原处进行修改,可以按需求增加或缩短,而且包含任何种类的对象或者被嵌套。
一、列表
列表的主要属性:
*任意对象的有序集合
从功能上看,列表就是收集其他对象的地方,可以把它看作组。列表所包含每一项都保持了从左到右的位置顺序(它们是序列)
*通过偏移读取
和字符串一样,可以通过列表对象的偏移对其进行索引,从而读取对象的某一部分内容。可以自行分片和合并之类的任务。
*可变长度,异构以及任意嵌套
列表可以实地增长或者缩短,并且可以包含任何类型的对象。支持任意的嵌套,可以创建列表的子列表的子列表。
*属于可变序列的分类
列表可以在原处修改。序列操作在列表与字符串中的工作方式相同。唯一的区别是:当合并和分片这样的操作当应用于列表时,
返回新的列表而不是新的字符串。然而列表是可变的,因为它们支持字符串不支持的其他操作,例如删除和索引赋值操作。
它们都是在原处修改列表。
*对象引用数组
列表包含了0或多个其他对象的引用。包含任何对象,对象可以是字典,也就是说可以嵌套字典。在Python解释器内部,列表就是C数组而不是链接结构。常
见的具有代表性的列表操作。更多可以查阅Python的标准库或help(list)或dir(list)查看list方法的完整列表清单。
操作 解释
L1=[] 一个空的列表
L2=[0,1,2,3] 四项:索引0到3
L3=['abc',['def','ghi']] 嵌套的子列表
L2[i] 索引
L2[i][j] 索引的索引
L2[i:j] 分片
len(L2) 求长度
L1+l2 合并
L2* 重复
for x in L2 迭代
3 in L2 成员
L2.append(4) 方法:增加 增加单个对象
L2.extend([5,6,7]) 方法:增加对多个对象
L2.sort() 方法:排序
L3.index('abc') 方法:通过对象查找对象索引(和索引相反的操作)
L2.insert(I,X) 方法:插入(在I位置插入X)。
insert() 插入的位置超过了列表的范围会插入得到列表最后一个位置。
L2.reverse() 方法:翻转
L2.remove('b') 方法:移除 方法的参数 填写的对象
L2.pop(1) 方法:移除 方法的参数填写的是索引
del L2[K] 裁剪:k为裁剪掉的索引
del L2[i:j] 裁剪:
L2[i]=1 索引赋值
L2[i:j]=[4,5,6] 分片赋值
rang(4) 生成整数列表/元组
xrange(1,4)
L4=[x**2 for x in range(5)] 列表解析
二、实际应用中的列表
1、基本列表操作
合并和重复,和字符串基本一致,不过结果是一个新的列表,而不是一个字符串。
>>> len([1,2,3])
3
>>> [1,2,3]+[4,5,6]
[1, 2, 3, 4, 5, 6]
>>> ['diege',18]*3
['diege', 18, 'diege', 18, 'diege', 18]
>>> 3 in [1,2,3]
True
>>> for x in [1,2,3]:print x,
...
1 2 3
注意“+”操作和字符串中的一样,然而值得重视的时"+"两边必须是相同类型的序列。不能将一个列表和一个字符串合并
到一起,除非先把列表转换为字符串。
>>> str([1,2]) + '34'
'[1, 2]34'
>>> [1,2]+list('34')
[1, 2, '3', '4']
2、索引,分片,矩阵
对列表进行索引的结果就是你指定的偏移处的对象(不管是什么类型),而对列表进行分片时往往返回一个新的列表
>>> L=['diege','lily','keylly']
>>> L[1]
'lily'
>>> L[-1]
'keylly'
>>> L[1:]
['lily', 'keylly']
>>> LL=[[1,2,3],[4,5,6],[7,8,9]]
>>> LL[2]
[7, 8, 9]
>>> LL[1][2]
6
三、原处修改列表
列表可变,支持实地改变列表对象的操作,以下操作都可以直接修改列表对象,而不会像字符串那样强迫你建立一个新的拷贝。因为python只处理对象引用,所以需要将原处修改一个对象与生成一个新的对象区分开来。
1、索引和分片赋值
赋值给一个特定的项(偏移)或整个片段(分片)来改变列表的内容。
>>> L=['diege','lily','keylly']
>>> L[1]='tom'
>>> L
['diege', 'tom', 'keylly']
>>> L[0:2]=['boo','july']
>>> L
['boo', 'july', 'keylly']
>>> L
['lily', 'kelly', 'x', [1, 2, 3]]
>>> L[0:2]=['lily','kelly','fang']
>>> L
['lily', 'kelly', 'fang', 'x', [1, 2, 3]]
分片赋值可以分成两步来理解。先删除,再插入。
列表嵌套字典
>>> L
['diege', {'tow': 789, 'one': 456}, 999]
>>> L[1]
{'tow': 789, 'one': 456}
>>> L[1]['one']
456
2、列表方法调用
1)、append() 追加一个元素
注意:追加是追加一个对象,一个字符串,一个列表等
>>> L
['boo', 'july', 'keylly']
>>> L.append('jun')
>>> L
['boo', 'july', 'keylly', 'jun']
>>> L
['lily', 'kelly', 'fang', 'x', [1, 2, 3], 'wang']
>>> L.append(['wang','fei'])
>>> L
['lily', 'kelly', 'fang', 'x', [1, 2, 3], 'wang', ['wang', 'fei']]
2)、extend() 在末端插入多个元素
放一个字符串会分解成字符插入,所以插入的参数要放入列表中。
>>> L.extend('test')
>>> L
['lily', 'kelly', 'fang', 'x', [1, 2, 3], 'wang', 't', 'e', 's', 't']
>>> del L[5:]
>>> L
['lily', 'kelly', 'fang', 'x', [1, 2, 3]]
>>> L.extend(['zhang','wang'])
>>> L
['lily', 'kelly', 'fang', 'x', [1, 2, 3], 'zhang', 'wang']
>>> L=[1,2]
>>> L.extend([3,4,5])
>>> L
[1, 2, 3, 4, 5]
3)、insert() 插入 要指定插入的位置和数据
insert() 插入的位置超过了列表的范围会插入得到列表最后一个位置。
>>> L.insert(1,5)
>>> L
[1, 5, 4]
>>> L.insert(2,[6,7,9])
>>> L
[1, 5, [6, 7, 9], 4]
>>> L=['diege','lily']
>>> L.insert(1,'kelly')
>>> L
['diege', 'kelly', 'lily']
4)、pop() 删除一个元素
pop() 方法:移除 方法的参数填写的是索引,默认最后一个
>>> L
[1, 2, 3, 4, 5]
>>> L.pop()
5
>>> L
[1, 2, 3, 4]
可以指定要删除的索引
>>> L.pop(2)
3
>>> L
[1, 2, 4]
5)、remove() 移除 必须指定对象名
>>> L.remove(2)
>>> L
[1, 4]
6)、sort() 排序
>>> L.sort()
>>> L
['boo', 'july', 'jun', 'keylly']
7)、reverse() 序列反转
>>> L.reverse()
>>> L
['keylly', 'jun', 'july', 'boo']
>>> L
['diege', 'kelly']
>>> L.remove('diege')
>>> L
['kelly']
注意 不支持find()和replace()方法,这两个方法属于字符串
3、其他常见的列表操作
del L[1]
>>> L
[1, 5, [6, 7, 9], 4]
>>> del L[1]
>>> L
[1, [6, 7, 9], 4]
>>> del L[1:]
>>> L
[1]
>>> L=['diege',1,5]
>>> L[1:]=[]
>>> L
['diege']
5个0列表的创建三种方法
[0]*5
>>>
>>> [0 for i in range(5)]
>>> L=[]
>>> for i in range(5):
... L.append(0
Python学习笔记整理(五)Python中的列表.的更多相关文章
- Python学习笔记整理(四)Python中的字符串..
字符串是一个有序的字符集合,用于存储和表现基于文本的信息. 常见的字符串常量和表达式 T1=‘’ 空字符串 T2="diege's" 双引号 T3=""&quo ...
- Python学习笔记整理(十一)Python的while和for循环
while语句,提供了编写通用循环的一种方法,而for语句是用来遍历序列对象内的元素,并对每个元素运行一个代码块.break,continue用在循环内,跳出整个循环或者跳出一次循环. 一.while ...
- Python学习笔记整理(三)Python中的动态类型简介
Python中只有一个赋值模型 一.缺少类型声明语句的情况 在Python中,类型是在运行过程中自动决定的,而不是通过代码声明.这意味着没有必要事声明变量.只要记住,这个概念实质上对变量,对象和它们之 ...
- Python学习笔记整理(十)Python的if测试
if语句是选取要执行的操作. 一.if语句 1.通用格式 形式是if测试,后面跟着一个或多个可选的elif(else if)测试,以及一个最终选用的else块.测试和else部分可以结合嵌套语句块,缩 ...
- Python学习笔记整理(python 3)
一.tuple(元组) tuple和list非常类似,但是tuple一旦初始化就不能修改,如: classmates = ('Michael', 'Bob', 'Tracy') 1 classmate ...
- python学习笔记(五岁以下儿童)深深浅浅的副本复印件,文件和文件夹
python学习笔记(五岁以下儿童) 深拷贝-浅拷贝 浅拷贝就是对引用的拷贝(仅仅拷贝父对象) 深拷贝就是对对象的资源拷贝 普通的复制,仅仅是添加了一个指向同一个地址空间的"标签" ...
- Python学习笔记(五)
Python学习笔记(五): 文件操作 另一种文件打开方式-with 作业-三级菜单高大上版 1. 知识点 能调用方法的一定是对象 涉及文件的三个过程:打开-操作-关闭 python3中一个汉字就是一 ...
- python学习笔记整理——字典
python学习笔记整理 数据结构--字典 无序的 {键:值} 对集合 用于查询的方法 len(d) Return the number of items in the dictionary d. 返 ...
- Python学习笔记之从文件中读取数据
10-1 Python 学习笔记:在文本编辑器中新建一个文件,写几句话来总结一下你至此学到的Python 知识,其中每一行都以“In Python you can”打头.将这个文件命名为learnin ...
随机推荐
- [JavaScript] JavaScript作用域深度解析
JavaScript作用域 JavaScript中的函数运行在它们被定义的作用域里,而不是它们被执行的作用域里. -- JS权威指南 在JS里,一切皆对象,函数也是. 一.有什么用 什么时候会用到它? ...
- shell脚本实例一,移动文件夹中大于2000B的文件到另一个文件夹
shell脚本能帮我们简化linux下的一些工作,现在有个需求,把TMPA文件夹下大于2000B的文件都移动到TMPB下 #! /bin/bash function movefiles() { ` d ...
- MongoDB insert/update/one2many案例
以博文与评论为例,博文有标题内容,对应多个评论,评论有评论人.评论内容等. ()插入一条博文: db.blog.insert( {','title':'this is blog title1','co ...
- MCS-51系列和80C51系列单片机是否相同
MCS是Intel公司单片机的系列符号.Intel推出有MCS-48.MCS-51.MCS-96系列单片机. MCS-51系列单既包括三个基本型80C31.8051.8751,以及对应的低功耗型号80 ...
- 检测客户端显示器分辨率、浏览器类型和客户端IP
原文:检测客户端显示器分辨率.浏览器类型和客户端IP 下面的代码实现了检测客户端显示器分辨率.浏览器类型和客户端IP的功能.你可以把客户端信息保存到Session,ViewState等中以便在其它的页 ...
- 基于 USB 传输的针式打印机驱动程序开发
1.引言 针式打印机曾经在相当长的一段时间占据打印机市场的主导地位,但是近年来由于喷墨.激光等非击打式打印机的冲击,针式打印机的市场份额逐年下降.即便如此,由于针式打印机在票据打印领域的不可取代性,同 ...
- Android listview局部刷新和模拟应用下载(zhu)
在android开发中,listview是比较常用的一个组件,在listview的数据需要更新的时候,一般会用notifyDataSetChanged()这个函数,但是它会更新listview中所有可 ...
- Android 使用Application总结
Application 配置全局Context 第一步.写一个全局的单例模式的MyApplication继承自Application 覆盖onCreate ,在这个方法里面实例化Application ...
- 【HDOJ】1080 Human Gene Functions
DP.wa了一下午,原来是把mmax写在外层循环了.最近事情太多了,刷题根本没状态. #include <cstdio> #include <cstring> #include ...
- C++中的基类和派生类
转载自:http://www.cnblogs.com/sujz/archive/2011/05/12/2044365.html 派生类的继承方式总结: 继承方式 说明 public 基类的public ...