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() ...
随机推荐
- Linux下ejabberd安装配置
1.下载Ejabberd安装包 wget http://www.process-one.net/downloads/ejabberd/2.1.13/ejabberd-2.1.13-linux-x86_ ...
- python3实现简单爬虫功能
本文参考虫师python2实现简单爬虫功能,并增加自己的感悟. #coding=utf-8 import re import urllib.request def getHtml(url): page ...
- Android自动化学习笔记之MonkeyRunner:MonkeyRunner环境搭建
---------------------------------------------------------------------------------------------------- ...
- 怎么去除google的 安全搜索
想要避开安全搜索 更改右上角的搜索设置,将搜索语言改为英文,然后保存搜索设置 第二次进入搜索设置里找Filter explicit results前的面的勾去掉即可.
- zend 快捷键
Ctrl+1 快速修复(最经典的快捷键,就不用多说了)Ctrl+D: 删除当前行Ctrl+Alt+↓ 复制当前行到下一行(复制增加)Ctrl+Alt+↑ 复制当前行到上一行(复制增加)Alt+↓ 当前 ...
- ftp服务器远程拷贝命令
xiamense@xiamense-testserver:~$ ftp 218.5.82.40 输入账户密码 get 远程文件路径 本机服务器路径get pa20160927.xml /home/xi ...
- CentOS6.5 Openssl版本升级
CentOS6.5 Openssl 升级: 第一步:在openssl官网(https://www.openssl.org/)下载最新版 Ps:个人使用的是openssl-1.0.1u.tar.gz版 ...
- js导入外部脚本文件
JS 语言没找到导入外部脚本文件的功能,只能通知宿主程序来处理. function include(path){ var a=document.createElement("script&q ...
- Ruby-调用windows窗体
发现SharpDevelop 也支持Ruby ,特别是可以直接把winform的控件直接用在 require "mscorlib" require "System.Win ...
- Diagramming for WinForms 教程一(读取图元数据)
1,新建“Visual c#” Windows窗体应用程序. 2,从“工具箱”的“Diagramming”选项卡下,托出“DiagramView”控件到Form1上.控件的"Name&quo ...