参考http://www.runoob.com/python3/python3-data-structure.html

列表

列表是可修改的。

列表方法让列表可以方便的作为一个堆栈来使用,堆栈作为特定的数据结构,最先进入的元素最后一个被释放(后进先出)。

其中用append()方法可以把一个元素添加的堆栈顶;可以用不指定索引的pop()方法把一个元素从堆栈顶释放出来,返回最后一个元素。

列表页可以用作队列,只是队列里是第一加入的元素,第一个取出来;拿列表做队列效率不高。在列表的最后添加或弹出元素速度快,然而在列表里插入或头部弹出速度不快(因为所有其他的元素都得一个一个移动)例如popleft()方法。

列表推导式

列表推导式提供了从序列创建列表的简单途径。应用程序将一些操作应用于某个序列的每个元素,最后用获得的结果作为生成新列表的元素,或者根据确定的判定条件创建子序列。

vec = [2,4,6]
vec1 = [3*x for x in vec]
#每个列表推导式在for之后跟一个表达式,如果希望推导出一个元组,必须用括号
print(vec1)
vec2 = [[x,x**2] for x in vec]
print(vec2)
vec3 = [3*x for x in vec if x >3] #if语句过滤
print(vec3)
vec4 = [3*x for x in vec if x <2]
print(vec4)
vec5 = [1,2,3]
vec6 = [x*y for x in vec for y in vec5 ]
print(vec6)
vec7 = [x+y for x in vec for y in vec5]
print(vec7)
vec8 = [vec[i]*vec5[i]for i in range(len(vec))]
print(vec8)

嵌套列表解析

Python的列表还可以嵌套。

#3x4矩阵列表
matrix = [
[1,2,3,4],
[5,6,7,8],
[9,10,11,12],
]
cr = [[row[i] for row in matrix] for i in range(4)]
#3x4矩阵列表转换为4x3列表
print(cr) #方法二
transposed = []
for i in range(4):
transposed.append([row[i] for row in matrix])
print(transposed)

del 语句

使用 del 语句可以从一个列表中依索引而不是值来删除一个元素。可以用del语句从列表中删除一个切割,或清空整个列表。

a = [-1,1,2,3,345,345,111.5]
del a[0]
print(a)
del a[2:4]
print(a)
del a[:]
print(a)
del a #也可以删除实体变量
print(a)

元组和序列

t = 12345,54321,'hello!'   #元组由若干逗号分隔的值组成
t[0]
print(t[0])
print(t)
u = t,(1,2,3,4,5) #元组在输出时总是有括号的,以便于正确表达嵌套结构。
print(u)

集合

集合是一个无序不重复元素的集。基本功能包括关系测试和消除重复元素。

可以用大括号({})创建集合。注意:如果要创建一个空集合,你必须用 set() 而不是 {} ;后者创建一个空的字典,下一节我们会介绍这个数据结构。

basket = {'apple','orange','apple','pear','orange','banana'}
print(basket) #删除重复的
x1 = 'orange' in basket #检测成员是否存在集合中
print(x1)
x2 = 'crabgrass' in basket
print(x2) x3 = set('abcdacbabc')
x4 = set('alacazz')
print(x3)
print(x3-x4) #在a中有,b中没有
print(x3|x4) #在a或b有
print(x3&x4) #在a和b中同时有
print(x3^x4) #在a或b中的字母,但是不同时在a和b
x5 = {x for x in 'abracadabra' if x not in 'abc'} #集合也支持推导式
print(x5)

字典

序列是以连续的整数为索引,与此不同的是,字典以关键字为索引,关键字可以是任意不可变类型,通常是字符串或数值。

在同一个字典中,关键字必须是互不相同。

创建空的字典:{}

d = {'a':5601,'b':4000}
d['c'] = 4127
print(d)
print(d['a'])
del d['b']
print(d)
d['d'] = 4127
print(d)
print(list(d.keys()))
print(sorted(d.keys()))
print('d' in d)
print('e' in d)
print('d' not in d)
#构造函数dict()直接从键值对元组列表中构建字典
d1 = dict([('a',5601),('b',4000),('c',4127)])
print(d1)
#字典推导可以用来创建任意键和值的表达式词典
d2 = {x: x**2 for x in (2,4,6)}
print(d2)
#如果关键字只是简单的字符串,使用关键字参数指定键值对
d3 = dict(a= 5601,b= 4000,c= 4127)
print(d3)

python3学习笔记13(数据结构)的更多相关文章

  1. Python3+Selenium3+webdriver学习笔记13(js操作应用:弹出框无效如何处理)

    #!/usr/bin/env python# -*- coding:utf-8 -*-'''Selenium3+webdriver学习笔记13(js操作应用:弹出框无效如何处理)'''from sel ...

  2. Python3学习笔记(urllib模块的使用)转http://www.cnblogs.com/Lands-ljk/p/5447127.html

    Python3学习笔记(urllib模块的使用)   1.基本方法 urllib.request.urlopen(url, data=None, [timeout, ]*, cafile=None,  ...

  3. SQL反模式学习笔记13 使用索引

    目标:优化性能 改善性能最好的技术就是在数据库中合理地使用索引.  索引也是数据结构,它能使数据库将指定列中的某个值快速定位在相应的行. 反模式:无规划的使用索引 1.不使用索引或索引不足 2.使用了 ...

  4. Ext.Net学习笔记13:Ext.Net GridPanel Sorter用法

    Ext.Net学习笔记13:Ext.Net GridPanel Sorter用法 这篇笔记将介绍如何使用Ext.Net GridPanel 中使用Sorter. 默认情况下,Ext.Net GridP ...

  5. Python3学习笔记 - 准备环境

    前言 最近乘着项目不忙想赶一波时髦学习一下Python3.由于正好学习了Docker,并深深迷上了Docker,所以必须趁热打铁的用它来创建我们的Python3的开发测试环境.Python3的中文教程 ...

  6. golang学习笔记13 Golang 类型转换整理 go语言string、int、int64、float64、complex 互相转换

    golang学习笔记13 Golang 类型转换整理 go语言string.int.int64.float64.complex 互相转换 #string到intint,err:=strconv.Ato ...

  7. springmvc学习笔记(13)-springmvc注解开发之集合类型參数绑定

    springmvc学习笔记(13)-springmvc注解开发之集合类型參数绑定 标签: springmvc springmvc学习笔记13-springmvc注解开发之集合类型參数绑定 数组绑定 需 ...

  8. python3学习笔记(7)_listComprehensions-列表生成式

    #python3 学习笔记17/07/11 # !/usr/bin/env python3 # -*- conding:utf-8 -*- #通过列表生成式可以生成格式各样的list,这种list 一 ...

  9. python3学习笔记(6)_iteration

    #python3 学习笔记17/07/10 # !/usr/bin/env python3 # -*- coding:utf-8 -*- #类似 其他语言的for循环,但是比for抽象程度更高 # f ...

随机推荐

  1. 运维yum语法

    软件管理 ​ 目前流行的软件包格式: 可直接执行的RPM与DEB.源代码形式的gzip与bzip2压缩包 RPM软件包管理 rpm rpm [选项] *.rpm -i --install instal ...

  2. WebStorm 破解方法

    WebStorm 破解方法 第一步 打开 IntelliJ IDEA 注册码 网址,点击下载最新的 破解补丁 第二步 将下载下来的破解补丁,复制到WebStorm 安装目录的bin目录下 第三步 修改 ...

  3. C# socket通讯 send方法记录

    由于本人是Java入门的开发,在C#开发中遇到的问题,在此记录一下: 1.client端的send方法不管发送出去没发送出去,总是显示发送出去. 查资料得知,send方法是将数据发送到缓存区,并不是直 ...

  4. Django连接oracle数据库的那些问题

    环境: windows 7 64位 python 3.6.5 32位 oracle客户端11.2 32位 django1.11.20 (django2.x版本不支持oracle客户端11g了) cx_ ...

  5. [ 随手记 5 ] C/C++ 继承

    个人理解: 继承:(意译)继续承接: A继承B,则A是派生类/子类,B为基类/父类: B有的成员变量/性质,A全部都有,而A有的B不一定有,在数学集合上可以说:B是A的子集: A继承B,可以说是A在B ...

  6. django如何查看mysql已有数据库中已有表格

    首先正常创建django项目,配虚拟环境,改配置文件,正常创建models,创建迁移和启动迁移等 接着通过找到Terminal窗户,双击,打开窗口 输入命令 python manage.py in i ...

  7. Python中的变量作用域

    python中变量作用域包括: L (Local) 局部作用域,函数内部声明但没有使用global的变量E (Enclosing) 闭包函数外的函数中,def或者lambda的本地作用域G (Glob ...

  8. JavaSE学习(二):进制转换—数据类型转换—Java运算符

    一.进制转换 1.1 其他进制转十进制(以十六进制为例): 十六进制范围:0-9, A-F对应数字10-15 2A7E(16)  =  14*16(0) +7*16(1) + 10*16(2)  + ...

  9. application————web

    application 作用域: 只要web服务器不关闭就一直存在 统计页面的统计次数 一个用户 多次刷新也统计 多个用户访问 思路: 需要一个变量 count 记录index.jsp访问次数 方法 ...

  10. Jenkins可持续集成项目搭建——配置Jenkins基本设置 & 运行脚本报错点

    一.系统管理->全局工具配置:配置JDK.GIT: 二.项目配置-部署源码管理的远程地址 三.项目配置-构建触发器(以Windows平台举例) 构建项目时,会自动分配一个运行空间(D:\Prog ...