笔记-python-tutorial-5.data structure
笔记-python-tutorial-5.data structure
1. data structure
1.1. list operation
- list.append(x) #尾部添加一个元素
- list.extend(iterable)
- list.insert(I, x)
- list.remove(x)
remove the first item from the list whose value is x.if x is not exist return ValueError.
- list.pop([i])
- list.clear()
- list.index(x [, start, end]) #返回首个值为X的元素下标。
- list.count(x)
- list.sort(key=None, reverse=False)
- list.reverse()
- list.copy()
返回一个复制品而不是引用。
1.1.1. using lists as stacks
stack = [3,4,5]
stack.append(6)
stack.pop()
1.1.2. using lists as queues
列表如果使用先进先出就是队列了,当然这样没有效率,不符初衷。
from collections import deque
queue = deque([‘before’, ‘middle’, ‘after’])
queue.append(‘carry’)
queue.popleft()
1.1.3. 列表生成式
下面是使用函数常规列表生成:
squares = list(map(lambda x: x**2, range(10)))
等效于
squares = [x**2 for x in range(10)]
1.1.4. 复杂一点的嵌套式列表生成式
>>> matrix = [
... [1, 2, 3, 4],
... [5, 6, 7, 8],
... [9, 10, 11, 12],
... ]
>>> [[row[i] for row in matrix] for i in range(4)]
[[1, 5, 9], [2, 6, 10], [3, 7, 11], [4, 8, 12]]
1.2. 删除del
a = [1,2,3,4,5]
del a[0]
del a[2:4]
del a[:]
del a
注意最后两个语句的效果是不一样的;
1.3. tuple
tuple是不可变的,但tuple中可以包含可变元素。
>>> t = ([45,67,3], [5,6,7,8],[54])
>>> t
([45, 67, 3], [5, 6, 7, 8], [54])
>>> t[1].append(879)
>>> t
([45, 67, 3], [5, 6, 7, 8, 879], [54])
>>> t[1] = [4]
Traceback (most recent call last):
File "<pyshell#15>", line 1, in <module>
t[1] = [4]
TypeError: 'tuple' object does not support item assignment
1.4. sets
python中的sets是一组无序不重复数据集合
类似于列表生成式,也支持生成式。
1.5. dictionaries
一些常规操作
>>> tel = {'jack': 4098, 'sape': 4139}
>>> tel['guido'] = 4127
>>> tel
{'sape': 4139, 'guido': 4127, 'jack': 4098}
>>> tel['jack']
4098
>>> del tel['sape']
>>> tel['irv'] = 4127
>>> tel
{'guido': 4127, 'irv': 4127, 'jack': 4098}
>>> list(tel.keys())
['irv', 'guido', 'jack']
>>> sorted(tel.keys())
['guido', 'irv', 'jack']
>>> 'guido' in tel
True
>>> 'jack' not in tel
False
生成式
>>> {x: x**2 for x in (2, 4, 6)}
{2: 4, 4: 16, 6: 36}
1.6. 元素遍历
对于字典有些不同,存在items()方法来同时访问键和值。
>>> knights = {'gallahad': 'the pure', 'robin': 'the brave'}
>>> for k, v in knights.items():
... print(k, v)
...
gallahad the pure
robin the brave
enumerate()序列访问,该方法会同时返回元素位置下标和值。
>>> for i, v in enumerate(['tic', 'tac', 'toe']):
... print(i, v)
...
0 tic
1 tac
2 toe
1.7. 条件判断
在while和if语句中可以使用带操作的条件判断式。
in and not in用于判断一个值是否存在于序列中。is用于判断两个对象是否是同一对象,需要注意区别。
a<b==c是合规的比较式,等于a<b and b ==c
and or 是可以在比较式中使用的,注意写法,简写一时爽,回看爽过头。
1.8. 序列之间比较
相同类型的序列之间可以比较。
比较原则:
- 先比较前面的元素,如果不同则给出结果;
- 如果相同,则按序逐个比较;
- 如果所有元素相等,则序列相等;
- 如果某一序列是另一序列的初始子序列,则较短的序列小;
- 字符串比较使用unicode编号来比较。
(1, 2, 3) < (1, 2, 4)
[1, 2, 3] < [1, 2, 4]
'ABC' < 'C' < 'Pascal' < 'Python'
(1, 2, 3, 4) < (1, 2, 4)
(1, 2) < (1, 2, -1)
(1, 2, 3) == (1.0, 2.0, 3.0)
(1, 2, ('aa', 'ab')) < (1, 2, ('abc', 'a'), 4)
笔记-python-tutorial-5.data structure的更多相关文章
- [译]The Python Tutorial#5. Data Structures
[译]The Python Tutorial#Data Structures 5.1 Data Structures 本章节详细介绍之前介绍过的一些内容,并且也会介绍一些新的内容. 5.1 More ...
- FAT文件系统规范v1.03学习笔记---2.FAT区之FAT数据结构(Fat Data Structure)
1.前言 本文主要是对Microsoft Extensible Firmware Initiative FAT32 File System Specification中文翻译版的学习笔记. 每个FAT ...
- Python: tree data structure
# 树结构 from pythonds.basic.stack import Stack #pip install pythonds from pythonds.trees.binaryTree im ...
- Python Tutorial笔记
Python Tutorial笔记 Python入门指南 中文版及官方英文链接: Python入门指南 (3.5.2) http://www.pythondoc.com/pythontutorial3 ...
- LeetCode 笔记27 Two Sum III - Data structure design
Design and implement a TwoSum class. It should support the following operations: add and find. add - ...
- Python Tutorial 学习(六)--Modules
6. Modules 当你退出Python的shell模式然后又重新进入的时候,之前定义的变量,函数等都会没有了. 因此, 推荐的做法是将这些东西写入文件,并在适当的时候调用获取他们. 这就是为人所知 ...
- 【转】Multithreaded Python Tutorial with the “Threadworms” Demo
The code for this tutorial can be downloaded here: threadworms.py or from GitHub. This code works wi ...
- 211. Add and Search Word - Data structure design
题目: Design a data structure that supports the following two operations: void addWord(word) bool sear ...
- Python Tutorial学习(十一)-- Brief Tour of the Standard Library – Part II
11.1. Output Formatting 格式化输出 The repr module provides a version of repr() customized for abbreviate ...
随机推荐
- python.h没有那个文件或目录解决方法
我用的是Deepin Linux,这应该是linux平台的问题,别的linux os也是执行安装,命令不同而已,windows和Mac不太清楚. 如果你使用的是python2.x,那么使用下面的语句: ...
- aapt.exe finished with non-zero exit value 1
在一个APP 中导入 严振杰的 ALBUM,出现错误 在网上找了各种,最后在 stackoverflow上找到这样的说法: -Go to File->project structure-> ...
- Js/Jquery获取input file的文件名
html代码: <input type="file" name="file" id="file" class="in ...
- 移动端真机调试工具--DebugGap (VIDE)
越来越多的移动端开发工作,需要我们有一个好的调试工具,以解决各类真机才会遇到的BUG,最近使用了一款DebugGap 的工具,非常方便,在这里推荐给大家. 官网地址 DebugGap . 按需求下载 ...
- Vue日历
Vue生成日历,根据返回值将日期标红 HTML: <h1>CSS 日历</h1> <div id="calendar"> <div cla ...
- 通过 java的 esl 连接 freeswitch
一.目标修改event_socket配置,使之能够建立远端ESL链接. 二.步骤 1. vim ../autoload_configs/event_socket.conf.xml 2. 默认的监听地址 ...
- PHP函数:method_exists和function_exists
method_exists 检查类的方法是否存在 bool method_exists ( mixed $object , string $method_name ) 检查类的方法是否存在于指定的ob ...
- Python爬虫实战:爬糗事百科的段子
一个偶然的机会接触了Python,感觉很好用,但是一直在看c++啥的,也没系统学习.用过之后也荒废了许久.之前想建个公众号自动爬糗事百科的段子,但是没能建起来,真是尴尬,代码上传的服务器上之后,不能正 ...
- 关于android界面菜单,project显示问题
刚用android studio不久,遇到了一个问题:界面菜单project不小心被关掉了,百度各种搜索无结果.我想大多数人都遇到过类似问题,此类问题其实很简单但是对于初学者来说就有点苦恼了.所以在此 ...
- 64位系统中为VS2012添加OpenGL工具包
之前一直都是按照网上教程进行的添加,以前使用的系统是32位的,所以一直都没有问题.最近换了64位系统,要使用到OpenGL,于是就又进行了原来的工作,但进行测试时,老是失败: 但是在目录:" ...