一. 列表

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基础整理笔记(二)的更多相关文章

  1. python基础整理笔记(九)

    一. socket过程中注意的点 1. 黏包问题 所谓的黏包就是指,在TCP传输中,因为发送出来的信息,在接受者都是从系统的缓冲区里拿到的,如果多条消息积压在一起没有被读取,则后面读取时可能无法分辨消 ...

  2. python基础整理笔记(五)

    一. python中正则表达式的一些查漏补缺 1.  给括号里分组的表达式加上别名:以便之后通过groupdict方法来方便地获取. 2.  将之前取名为"name"的分组所获得的 ...

  3. python基础整理笔记(四)

    一. python 打开文件的方法 1. python中使用open函数打开文件,需要设定的参数包括文件的路径和打开的模式.示例如下: f = open('a.txt', 'r+') 2. f为打开文 ...

  4. python基础整理笔记(一)

    一. 编码 1. 在python2里,加载py文件会对字符进行编码,需要在文件头上的注释里注明编码类型(不加则默认是ascII). # -*- coding: utf-8 -*- print 'hel ...

  5. python基础整理笔记(八)

    一. python反射的方式来调用方法属性 反射主要指的就是hasattr.getattr.setattr.delattr这四个函数,作用分别是检查是否含有某成员.获取成员.设置成员.删除成员. 此外 ...

  6. python基础整理笔记(七)

    一. python的类属性与实例属性的注意点 class TestAtt(): aaa = 10 def main(): # case 1 obj1 = TestAtt() obj2 = TestAt ...

  7. python基础整理笔记(三)

    一. python的几种入参形式:1.普通参数: 普通参数就是最一般的参数传递形式.函数定义处会定义需要的形参,然后函数调用处,需要与形参一一对应地传入实参. 示例: def f(a, b): pri ...

  8. python基础整理笔记(六)

    一. 关于hashlib模块的一些注意点 hashlib模块用于加密相关的操作,代替了md5模块和sha模块,主要提供 SHA1, SHA224, SHA256, SHA384, SHA512, MD ...

  9. python基础学习笔记二之列表

    1.列表 ①列表的创建: ②列表的查询(索引): ③列表的切片操作: 此处要注意到:返回索引0到3的元素,顾头不顾尾. ④列表的增加: s.append()  #直接在结尾追加 s.insert()  ...

随机推荐

  1. System.exit(1)

    用于退出java的虚拟机,也是finally块中语句不被执行的唯一情况

  2. MySQL 的 RowNum 实现

    MySQL 的 RowNum 实现 MySQL 下面没有RowNum,排序后序号却无法得到,比较麻烦! 在网上找了再三,通过比较,确认了以下的方法是可行的 : rownum, CollectSn ,b ...

  3. Linux:ssh连接服务器很慢

    ssh连接服务器,如果很慢,可以进行如下处理: vi /etc/ssh/sshd_config#UseDNS yes改成:UseDNS no/etc/init.d/sshd restart ----- ...

  4. java三大框架之一hibernate使用入门

    综述:Hibernate的作用就是让实体类与数据库映射,使数据持久化,用于替代JDBC,使我们不致于写那么多sql语句代码. 1. 首先在官网www.hibernate.org下载hibernate包 ...

  5. tomcat7的安装与配置、及Servlet部署

    一.tomcat7的下载页面 https://tomcat.apache.org/download-70.cgi 就是:32-bit Windows zip 下载得到apache-tomcat-7.0 ...

  6. VC++ 动态创建单个工具条,并加载外部的位图(bmp)文件为工具栏图像

    步骤: 1, 在框架类CMainFrame头文件里,增加图像变量和工具条变量. CMFCToolBarImages m_UserImages; CMFCToolBar m_wndToolBar; 2, ...

  7. urllib.request

    [urllib.request] 1.urlopen结果保存在内存. 2.ulrretrieve结果保存到文件. 3.response有read方法. 4.可以创建Request对象. 5.发送Pos ...

  8. iOS获取设备型号、装置类型等信息

    iOS获取设备型号.设备类型等信息 设备标识 关于设备标识,历史上盛行过很多英雄,比如UDID.Mac地址.OpenUDID等,然而他们都陆陆续续倒在了苹果的门下.苹果目前提供了2个方法供App获取设 ...

  9. ios 更新约束

    [view setNeedsUpdateConstraints];    [view updateConstraintsIfNeeded];    [view setNeedsLayout];    ...

  10. 技术英文单词贴--R

    R redirect 重定向,改变方向 reference 参考,提及,引用 register 注册,登记,挂号 render 渲染 represent 代表,象征 route 路线,路由,通道 ro ...