笔记-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 ...
随机推荐
- Linux下安装JDK及相关配置
1.官网下载JDK:选择Linux压缩包进行下载 https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-213 ...
- while循环,break和continue,运算符,格式化输出
一丶while循环 while条件: 代码块(循环体) #数数 打印1-100 count = 1 while count <= 100: print(count) count += 1 执行顺 ...
- 异步加载js的3种方式
默认情况javascript是同步加载的,也就是javascript的加载时阻塞的,后面的元素要等待javascript加载完毕后才能进行再加载,对于一些意义不是很大的javascript,如果放在页 ...
- RING3到RING0
当我在说跳转时,说的什么? CPU有很多指令,不是所有的指令都能够随时用,比如 ltr指令就不是随便什么时候能用,在保护模式下,如果你不安规则来执行指令,CPU就会抛出异常,比如你在INTEL手册上就 ...
- [:space:]的用法(转)
转自:http://blog.itpub.net/27181165/viewspace-1061688/ 在linux中通常会使用shell结合正则表达式来过滤字符,本文将以一个简单的例子来说明+,* ...
- python property用法
参考 http://openhome.cc/Gossip/Python/Property.html http://pyiner.com/2014/03/09/Python-property.html ...
- 流媒体 5——MPEG声音
1. 听觉系统的感知特性: MPEG声音的数据压缩和编码不是依据波形本身的相关性和模拟人的发音器官的特性,而是利用人的听觉系统的特性来达到压缩声音数据的目的,这种压缩编码称为感知声音编码. 许多科学工 ...
- Q9400为何难以100%全速运行
采用基于正域的约简. 数据:Ticdata2000 记录数:5822 条件属性:85 结果: 1. Core i7 3632QM 4四核八线程 2.2G 动态加速3.2G 0.516s 2. Core ...
- noip模拟赛#42
T1:给len=1e5的数字串,操作为将某个位置起始的后缀搬到最前面.求有多少个不重复的比原串大和多少个小. =>maya这铁定可以找出些什么规律来.然后就over 了. =>字符串has ...
- Android(java)学习笔记74:ListViewProject案例(ListView + ArrayAdapter)
1. 首先是MainActivity.java文件,如下: package com.himi.lv1; import java.util.ArrayList; import java.util.Lis ...