Python基础-列表及列表解析小结

列表及列表解析

发现要到2013了,这两个月,离职入职,忙七忙八的,博文少了好多,笔记到是一大堆。
最近开始整理书签,微博收藏以及笔记梳理
采用删的方式,就是在evernote中新建一片,然后捞对应的笔记,一点点总结梳理,删除原有的笔记,发现这样效率高些(原来是在原有笔记之上直接修改总结,发现有用的信息其实并不多,效率有点低)

相对而言比较全和有用,会持续优化。

2013,发完这个系列的博客之后,将会整个博客迁移到自己的博客(刚开始写…),后续将同步吧,不过csdn可能会慢一些,自己blog会更自由些。后续将会是python&框架,linux后台开发,Go等等其他。

不扯了,看正题
以下是对列表笔记梳理的第一个版本,仅供参考

资料来源于书籍,网络,个人练习等等


定义:

列表是Python中使用最频繁的数据类型【可以说没有之一】

关键词:有序,可变

查看帮助 : help(list)

常见的列表操作

声明&创建

内建函数list(a_sequence) 可以将一个序列转为列表

通过下标访问

增加元素

A.新加入一个元素append

append方法添加。它在原列表末尾添加一个 item, item类型可以是任意的

B.插入一个元素insert

C.两个列表相加
两种方式
第一种

第二种(必须接收一个参数,且是另一个列表)

等价的做法

梳理:

s.append(x)

same as s[len(s):len(s)] = [x] 在列表尾部追加单个对象x。使用多个参数会引起异常。

s.extend(x)

same as s[len(s):len(s)] = x将列表L中的表项添加到列表中。返回None。

s.insert(i, x)

same as s[i:i] = [x] 在索引为i的元素前插入对象x。如list.insert(0,x)在第一项前插入对象。返回None。

删除元素

A.按item的索引或切片删除

B.按item的值进行删除

若是remove对应值查无,将跑ValueError

C.删除某个位置并返回该位置值

pop若是不传位置参数,默认删除列表最后一个元素

梳理:

s.pop([i])

same as x = s[i]; del s[i]; return x删除列表中索引为x的表项,并返回该表项的值。若未指定索引,pop返回列表最后一项。

s.remove(x)

same as del s[s.index(x)] 删除列表中匹配对象x的第一个元素。匹配元素时产生异常。返回None。

del s[i:j]

same as s[i:j] = []

修改元素

对指定索引进行赋值操作

A.某个元素

B.某一段元素

梳理:

s[i] = x

item i of s is replaced by x

s[i:j] = t

slice of s from i to j is replaced by the contents of the iterable t

5.切片和索引

A.索引l[i]

B.切片l[i:j:k]
i,j,k可选,冒号必须的 i不指定默认0,j不指定默认序列尾,k不指定默认1

排序

A.原地排list.sort()

sort可接受参数

列表的比较操作 , 隐式调用cmp 方法 , 比较规则是逐个扫描元素 , 进行比较, 如果可以比较 , 比较, 如果相等扫描下一个元素 , 如果不相等返回结果 , 如果两个元素类型不可以比较 , 就比较两个对象的 id()值 .. 如果一直相等 ,直到一个列表扫描结束 , 那么返回较长的列表较大

B.sorted函数

sorted(l1) #返回l1的有序序列,l1不变

C.反序

同样

l[::-1]可以达到一样的效果,但是这个是返回一个新的列表

梳理:

sort sorted 区别

s.reverse()

reverses the items of s in place颠倒列表元素的顺序。

s.sort([cmp[, key[, reverse]]])

sort the items of s in place对列表排序,返回none。bisect模块可用于排序列表项的添加和删除。

查找和统计

A.包含判断in ,not in

B.查询位置索引index

C.统计一个元素的出现次数

梳理:

s.count(x)

return number of i’s for which s[i] == x返回对象x在列表中出现的次数。

s.index(x[, i[, j]])

return smallest k such that s[k] == x and i <= k < j返回列表中匹配对象x的第一个列表项的索引。无匹配元素时产生异常。

遍历列表

A.直接

B.需要索引位置

9.其他操作

清空列表

复制列表

注意:在操作list时,如果是涉及原地修改的操作,例如append,insert等,返回值是None
要防止出现这种语法 l1 = l1.append(‘a’) ,如果这样,你将得到None…….

列表解析

定义和说明

列表推导式提供了一个创建链表的简单途径,无需使用 map() , filter() 以及 lambda 。以定义方式得到列表通常要比使用构造函数创建这些列表更清晰。每一个列表推导式包括在一个 for 语句之后的表达式,零或多个 for 或 if 语句。返回值是由 for 或 if 子句之后的表达式得到的元素组成的列表。如果想要得到一个元组,必须要加上括号。

基本列表解析

基本

多个值的

两次循环

可以调用函数

注意,列表解析不会改变原有列表的值,会创建新的list

条件列表解析

嵌套列表解析

交换行列

其他:

1.根据索引取元素时,需要进行边界检查 IndexError
切片取,不需要,超过边界不会异常

2.在迭代中修改列表
注意,不安全,不建议这么干
但是可以
for i in l1[:]:
l1.insert()……

3.多个list合成一个
就是

变为

处理

4.关于堆栈和队列

通过上面的操作,可以发现,很轻易可以拿列表当做堆栈或者队列使用

当然,他们有自己的模块,可以查相关库

5.序列相关模块

array 一种受限制可变序列类型,要求所有元素必须是相同类型

copy 提供浅拷贝和深拷贝的能力

operator 包含函数调用形式的序列操作符,如 operator.concat(m,n) 相当于m+n

re 正则表达式

types 包含Python 支持的所有类型

collections 高性能容器数据类型

补充

2013-09-01 二维数组初始化陷阱

对一维数组,可以这么做

但是对二维数组,不成立

二维数组,可以这么做


The end!

wklken

Gighub: https://github.com/wklken

Blog: http://wklken.sinaapp.com/

2012-12-30

打赏支持我写出更多好文章,谢谢!

打赏作者

打赏支持我写出更多好文章,谢谢!

任选一种支付方式

1 3 收藏 1 评论

关于作者:wklken

Pythonista/vimer 个人主页 · 我的文章 · 37 ·   

相关文章

可能感兴趣的话题



直接登录
最新评论
跳到底部
返回顶部