数据结构-Python3.7<三>
上一篇:流程控制-Python<二>
- 因为列表具有pop、append、insert方法,因此列表可以当作堆、栈使用。由于性能问题,不建议当作堆。(堆:队列优先,先进先出(FIFO—first in first out)栈:先进后出(FILO—First-In/Last-Out))
- 列表的pop、insert方法,使得列表可以当作队列使用,先入先出,但是在列表的开头做插入或者弹出都非常慢,因为要移动其他元素。需要用到队列,建议使用collections.deque。
- 可以使用map来创建队列,map(func,*iterables)
>>> list(map(lambda x:x**2,range(23)))
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 121, 144, 169, 196, 225, 256, 289, 324, 361, 400, 441, 484] - 创建列表的"[ ]",可以包含复杂的表达式,和嵌套函数
>>> test=[ x**2 for x in range(3) ]
>>> test
[0, 1, 4] - 列表删除元素方法及删除列表方法
:remove、pop、clear、del。remove与pop都只能删除一个元素、clear清空列表。del可以切片删除。>>> test=[0,1,2,3,4]
>>> test.remove(3)
>>> test
[0, 1, 2, 4] >>> test=[0,1,2,3,4]
>>> test.pop()
4
>>> test
[0, 1, 2, 3]
>>>
>>> test.pop(1)
1
>>> test
[0, 2, 3]
>>> >>> test=[0,1,2,3,4]
>>> test.clear()
>>> test
[] >>> test=[0,1,2,3,4]
>>> del test[0:2]
>>> test
[2, 3, 4]
>>> del test[:]
>>> test
[]
>>> del test
>>> test
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'test' is not defined
>>> - 序列主要以下几种类型:
- 3种基本序列类型(Basic Sequence Types):list、tuple、range (补:range() 函数返回的结果是一个整数序列的对象,而不是列表。tuple就是元组)
- 专门处理文本的附加序列类型(Text Sequence Types):str
- 专门处理二进制数据的附加序列类型(Binary Sequence Types): bytes、bytearray、memoryview
按照序列是否可被改变分类:
- 可变序列: list
- 不可变序列:tuple、str
- tuple元组是标准的序列类型,不支持个别项目分配
>>> a=6,7,8,89,9
>>> a
(6, 7, 8, 89, 9)
>>> a[0]=2
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment
>>>但是tuple可以包含可变对象
>>> a=43,4,5,6,[4,4,4,4]
>>> a
(43, 4, 5, 6, [4, 4, 4, 4])
>>> a[4][0]=99999
>>> a
(43, 4, 5, 6, [99999, 4, 4, 4])
>>> - tuple的创建,当为空元素和一个元素的情况
>>> a=()
>>> a
()
>>> a=0,
>>> a
(0,)
>>>tuple的解压缩
>>> a,b,c=3,4,5
>>> a
3
>>> b
4
>>> c
5
>>>tuple的打包
>>> a=3,4,5,5
>>> a
(3, 4, 5, 5)
>>> - 字典的键必须是不可变的对象,例如字符串、数字、元组且元祖不能直接或间接的包含可变对象。字典的健不可以为列表,因为列表可以使用索引分配、del 切片 、append、extend等方法更改list对象。
- 想要在相反的情况下循环一个列表,可以使用reversed函数
>>> for i in reversed(range(1,6,1)):
... print(i)
...
5
4
3
2
1
>>> - is 、 is not 判断元素是否相等
>>> a=[]
>>> b=[]
>>> a is b
False
>>> a=9
>>> b=9
>>> a is b
True
>>> a is not b
False
>>> - in、not in 判断是否在某个序列里
>>> test="basecee"
>>> 'a' in test
True
>>> 'f' in test
False
>>> 'f' not in test
True
>>> "ba" in test
True - 所有的比较运算符都有相同的优先级,比所有的数值运算符都要低。 这里‘< ,>’优先级低于‘+’
>>> 6+8>12
True
>>> 13<6+9
True
>>> - 布尔运算符的优先级低于比较运输符
>>> 12==10 or 10==10
True
>>> 10>5 and 9<0
False
>>>
阅读网址:https://docs.python.org/3/tutorial/datastructures.html
数据结构-Python3.7<三>的更多相关文章
- COJ966 WZJ的数据结构(负三十四)
WZJ的数据结构(负三十四) 难度级别:C: 运行时间限制:20000ms: 运行空间限制:262144KB: 代码长度限制:2000000B 试题描述 给一棵n个节点的树,请对于形如"u ...
- COJ967 WZJ的数据结构(负三十三)
WZJ的数据结构(负三十三) 难度级别:C: 运行时间限制:7000ms: 运行空间限制:262144KB: 代码长度限制:2000000B 试题描述 请你设计一个数据结构,完成以下功能: 给定一个大 ...
- COJ970 WZJ的数据结构(负三十)
WZJ的数据结构(负三十) 难度级别:D: 运行时间限制:1000ms: 运行空间限制:262144KB: 代码长度限制:2000000B 试题描述 给你一棵N个点的无根树,点和边上均有权值.请你设计 ...
- COJ968 WZJ的数据结构(负三十二)
WZJ的数据结构(负三十二) 难度级别:D: 运行时间限制:5000ms: 运行空间限制:262144KB: 代码长度限制:2000000B 试题描述 给你一棵N个点的无根树,边上均有权值,每个点上有 ...
- COJ969 WZJ的数据结构(负三十一)
WZJ的数据结构(负三十一) 难度级别:D: 运行时间限制:3000ms: 运行空间限制:262144KB: 代码长度限制:2000000B 试题描述 A国有两个主基站,供给全国的资源.定义一个主基站 ...
- COJ 0967 WZJ的数据结构(负三十三)
WZJ的数据结构(负三十三) 难度级别:E: 运行时间限制:7000ms: 运行空间限制:262144KB: 代码长度限制:2000000B 试题描述 请你设计一个数据结构,完成以下功能: 给定一个大 ...
- COJ 0970 WZJ的数据结构(负三十)树分治
WZJ的数据结构(负三十) 难度级别:D: 运行时间限制:1000ms: 运行空间限制:262144KB: 代码长度限制:2000000B 试题描述 给你一棵N个点的无根树,点和边上均有权值.请你设计 ...
- 20172328 2018-2019《Java软件结构与数据结构》第三周学习总结
20172328 2018-2019<Java软件结构与数据结构>第三周学习总结 概述 Generalization 本周学习了第五章:队列.主要内容包含队列的处理过程.如何用对例如求解问 ...
- 20172328《程序设计与数据结构》实验三 敏捷开发与XP实践报告
20172328<程序设计与数据结构>实验三 敏捷开发与XP实践报告 课程:<程序设计与数据结构> 班级: 1723 姓名: 李馨雨 学号:20172328 实验教师:王志强 ...
随机推荐
- tomcat 配置 使用 HTTPS
1.生成证书 keytool -genkeypair -alias "tomcat" -keyalg "RSA" -keystore "d:\temp ...
- ZOJ 3229 Shoot the Bullet (有源有汇有上下界最大流)
题意:一个人要给女孩子们拍照,一共 n 天,m 个女孩子,每天他至多拍 d[i] 张照片,每个女孩子总共要被至少拍 g[i] 次.在第 i 天,可以拍 c[i] 个女孩子,c[i] 个女孩子中每个女孩 ...
- API网关设计(一)之Token多平台身份认证方案(转载)
原文:https://segmentfault.com/a/1190000018535570?utm_source=tag-newest 概述 今天咱们面对移动互联网的发展,系统一般是多个客户端对应一 ...
- SQL Server表分区(水平分区及垂直分区)
什么是表分区? 表分区分为水平表分区和垂直表分区,水平表分区就是将一个具有大量数据的表,进行拆分为具有相同表结构的若干个表:而垂直表分区就是把一个拥有多个字段的表,根据需要进行拆分列,然后根据某一个字 ...
- Dispatch Queue 之 dispatch_async
 可以看到,在queue里的任务,不仅仅是一个函数,也可以是一个其他的queue. 下面是一个例子.  全局队列的处理 一般一个全局队列有多个线程,这些个线程会遍历并处理链表里的任务. 对于全局队 ...
- 机器学习基石笔记:07 The VC Dimension
当N大于等于2,k大于等于3时, 易得:mH(N)被Nk-1给bound住. VC维:最小断点值-1/H能shatter的最大k值. 这里的k指的是存在k个输入能被H给shatter,不是任意k个输入 ...
- jsp-静态包含和动态包含的区别
include指令是静态包含.静态包含的意思就是:把文件的代码内容都包含进来,再编译! include指令是静态包含,include行为是动态包含.其实include行为就是封装了request.ge ...
- ffmpeg 视频实现各种特效
直接上命令: //渐入i in.mp4 -vf fade=in:0:90 out.mp4 //黑白 i in.mp4 -vf lu ...
- [,,].length等于几
分别测试了谷歌.欧朋,火狐,QQ.搜狗,Edge,ie5.7.8.9.10.11 其中ie5,ie7,ie8得到的结果为3 其他均为2:如果最后一个逗号后面为空,则不识别最后一位
- 如何把checkbox做成radio一样的单选效果
<!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>复 ...