python基础整理笔记(二)
一. 列表
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. 使用实例:
a = {}
b = dict()
c = {1:2, 2:3}
2. 主要支持的操作及其时间复杂度如下:

3. 其他:
在python2中,字典的keys()方法和values()方法,返回的直接就是list,而到了python3中,返回的是dictkey和dictvalue的类型。他们可以迭代,但是无法做切片操作等,需要转换为list或者tuple。
字典是无需的,新加入的元素未必就是放在后面的。需要实现有序的字典,可以使用OrderedDict。
四. 元组
1. 使用示例
a = (1,)
b = tuple(1)
2. 支持的操作
元组支持除了涉及增删改以外的list的操作,二者非常相似。
3. 其他
元组类似一个不可变的list,不能给它添加元素,也不能改变元素里面的值。但是实际上如果元组内部的元素是可变的,也是可以改变的,如图所示:

还有需要注意的是,并非加了括号就代表是元组,如果某个元组初始化时候只有1个元素,必须在这1个元素后面加上逗号,否则就不是元组了(类似我示例代码里写的那样)。
五. for循环
for用于循环可迭代的对象,每次得到其中一个内容。
a = [1, 3, 4, 5]
for i in a:
print i
六. enumerate
使用示例:
for i,j in enumerate(('a','b','c')):
print i,j
for i,j in enumerate({'a':1,'b':2}):
print i,j
for i,j in enumerate('abc'):
print i,j
作用为可迭代对象增加序号,注意的是如果用在dict上的话,序号外迭代出来的元素为dict的key,不包括value。
七. range 和 xrange
使用示例:
range(1,10,2)
range(10,1,-1)
range(len(lstName))
作用是根据起始,终止,和步长三个参数,生成在一定范围内的数字。range和xrange的区别在于,前者会直接生成整个list,后者则是一个迭代器,在迭代的过程中一次返回一个。
不过在python3中,range和xrange已经合并为range,不过实际的作用与2中的xrange相同。
python基础整理笔记(二)的更多相关文章
- python基础整理笔记(九)
一. socket过程中注意的点 1. 黏包问题 所谓的黏包就是指,在TCP传输中,因为发送出来的信息,在接受者都是从系统的缓冲区里拿到的,如果多条消息积压在一起没有被读取,则后面读取时可能无法分辨消 ...
- python基础整理笔记(五)
一. python中正则表达式的一些查漏补缺 1. 给括号里分组的表达式加上别名:以便之后通过groupdict方法来方便地获取. 2. 将之前取名为"name"的分组所获得的 ...
- python基础整理笔记(四)
一. python 打开文件的方法 1. python中使用open函数打开文件,需要设定的参数包括文件的路径和打开的模式.示例如下: f = open('a.txt', 'r+') 2. f为打开文 ...
- python基础整理笔记(一)
一. 编码 1. 在python2里,加载py文件会对字符进行编码,需要在文件头上的注释里注明编码类型(不加则默认是ascII). # -*- coding: utf-8 -*- print 'hel ...
- python基础整理笔记(八)
一. python反射的方式来调用方法属性 反射主要指的就是hasattr.getattr.setattr.delattr这四个函数,作用分别是检查是否含有某成员.获取成员.设置成员.删除成员. 此外 ...
- python基础整理笔记(七)
一. python的类属性与实例属性的注意点 class TestAtt(): aaa = 10 def main(): # case 1 obj1 = TestAtt() obj2 = TestAt ...
- python基础整理笔记(三)
一. python的几种入参形式:1.普通参数: 普通参数就是最一般的参数传递形式.函数定义处会定义需要的形参,然后函数调用处,需要与形参一一对应地传入实参. 示例: def f(a, b): pri ...
- python基础整理笔记(六)
一. 关于hashlib模块的一些注意点 hashlib模块用于加密相关的操作,代替了md5模块和sha模块,主要提供 SHA1, SHA224, SHA256, SHA384, SHA512, MD ...
- python基础学习笔记二之列表
1.列表 ①列表的创建: ②列表的查询(索引): ③列表的切片操作: 此处要注意到:返回索引0到3的元素,顾头不顾尾. ④列表的增加: s.append() #直接在结尾追加 s.insert() ...
随机推荐
- 安卓处理原始XML文件
// 获取XML文档(Parser:剖析器) XmlResourceParser parser = getResources().getXml(R.xml.person); try { // 文档未完 ...
- CentOS6.5下安装apache2.2和PHP 5.5.28
CentOS6.5下安装apache2.2 1. 准备程序 :httpd-2.2.27.tar.gz 下载地址:http://httpd.apache.org/download.cgi#apache2 ...
- Android Service 文档
应用场景: 1 用于将后台逻辑(Service中)和UI逻辑(Activity中)进行解耦,实现Service功能的复用,为其他程序提供功能. 2 后台功能,由于Activity在进入后台时(On ...
- 通过 ES6 Promise 和 jQuery Deferred 的异同学习 Promise
Deferred 和 Promise ES6 和 jQuery 都有 Deffered 和 Promise,但是略有不同.不过它们的作用可以简单的用两句话来描述 Deffered 触发 resolve ...
- Myeclipse以及Genymotion工具的使用以及java后台开发小结
1. 服务端的Servlet程序修改并保存后,需要重启tomcat服务器才能使其修改有效.重新部署web项目是没有什么卵用的. 2. servers选项卡若是移走了看不到,在window-show v ...
- iOS 调用拍照、选择本地相册、上传功能---未完善。
1.新建viewController 拖入一个Button,添加点击事件,使用代理方法 <UIActionSheetDelegate,UIImagePickerControllerDelegat ...
- nc检测端口是否正常服务的一个命令
最近碰到一个项目,前端用apache htttpd进行发布(80端口),通过双机负载均衡转发到后端的两个tomcat进行处理(8081和8082端口),现在需要随时监控这三个端口的情况,一旦down掉 ...
- Linux设置静态IP
在做项目时由于公司局域网采用自动获取IP的方式,导到每次服务器重启主机IP都会变化.为了解决这个问题,我参考了http://blog.sina.com.cn/s/blog_537977e50100qh ...
- 一步一步搭建Jenkins环境
Jenkins使用经验谈1(一步一步搭建Jenkins环境)在公司使用 Jenkins 软件已经有一段时间了,走了很多弯路,但也积累了一些经验,可以和大家分享一下.我们来一起搭建Jenkins环境.首 ...
- 如何异步创建文件夹(node)
模块fs作为node的核心模块之一,支持本地文件操作的接口,几乎对于所有的操作都提供同步和异步两种方案.例如,创建文件夹有mkdir和mkdirSync.不论对于mkdir还是mkdirSync,都需 ...