码迷,mamicode.com
首页 > 编程语言 > 详细

python基础整理笔记(二)

时间:2016-05-21 18:56:35      阅读:160      评论:0      收藏:0      [点我收藏+]

标签:

 

 

一. 列表

1. 创建实例:

a = [1,2,3]
b = list()

2. 主要支持的操作及其时间复杂度如下:

技术分享

3. 其他

python中的列表,在内存中实际存储的形式其实是分散的存储,比较类似STL中的vector,会预先分配一定长度的内存,当不够时,会申请新的更大的一块内存,将原有的数据copy过去。删除的情况也是类似的相反情况,所以如果存储的元素数量常有巨变,使用deque来代替比较好。deque是一个双向链表,不会去copy元素。

而从上图中我们也可以看出,判断 x in s的复杂度是 O(n),所以如果只是需要确认是否in的情况,在创建数据存储时就使用set会更好,平均复杂度是O(1)。

 

三. 字典

1. 使用实例:

1 a = {}
2 b = dict()
3 c = {1:2, 2:3}

 2. 主要支持的操作及其时间复杂度如下:

技术分享

3. 其他:

在python2中,字典的keys()方法和values()方法,返回的直接就是list,而到了python3中,返回的是dictkey和dictvalue的类型。他们可以迭代,但是无法做切片操作等,需要转换为list或者tuple。

字典是无需的,新加入的元素未必就是放在后面的。需要实现有序的字典,可以使用OrderedDict。

 

四. 元组

1. 使用示例

1 a = (1,)
2 b = tuple(1)

2. 支持的操作

元组支持除了涉及增删改以外的list的操作,二者非常相似。

3. 其他

元组类似一个不可变的list,不能给它添加元素,也不能改变元素里面的值。但是实际上如果元组内部的元素是可变的,也是可以改变的,如图所示:

技术分享

还有需要注意的是,并非加了括号就代表是元组,如果某个元组初始化时候只有1个元素,必须在这1个元素后面加上逗号,否则就不是元组了(类似我示例代码里写的那样)。

 

五. for循环

for用于循环可迭代的对象,每次得到其中一个内容。

1 a = [1, 3, 4, 5]
2 for i in a:
3     print i

 

六. enumerate

 使用示例:

1 for i,j in enumerate((a,b,c)):
2     print i,j
3 
4 for i,j in enumerate({a:1,b:2}):
5     print i,j
6 
7 for i,j in enumerate(abc):
8     print i,j

作用为可迭代对象增加序号,注意的是如果用在dict上的话,序号外迭代出来的元素为dict的key,不包括value。

 

七. range 和 xrange

使用示例:

1 range(1,10,2)
2 range(10,1,-1)
3 range(len(lstName))

作用是根据起始,终止,和步长三个参数,生成在一定范围内的数字。range和xrange的区别在于,前者会直接生成整个list,后者则是一个迭代器,在迭代的过程中一次返回一个。

不过在python3中,range和xrange已经合并为range,不过实际的作用与2中的xrange相同。

python基础整理笔记(二)

标签:

原文地址:http://www.cnblogs.com/nigel-woo/p/5515191.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!