笔记-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服务器安装nodejs运行环境
安装nodejs运行环境 第一步:到node官网下载相应版本的安装包,将安装包放置服务器上,路径为 usr/local/node(可根据自身情况进行修改) 第二步:解压 ***.tar.xz格式文件需 ...
- springBoot jpa uuid生成策略
实体类 import org.hibernate.annotations.GenericGenerator; import javax.persistence.*; @Entity @Table(na ...
- Jackson使用手册
引用jar:jackson-core,jackson-databind,jackson-annotations http://central.maven.org/maven2/com/fasterxm ...
- C# sftp通过秘钥上传下载
一.适用场景 我们平时习惯了使用ftp来上传下载文件,尤其是很多Linux环境下,我们一般都会通过第三方的SSH工具连接到Linux,但是当我们需要传输文件到Linux服务器当中,很多人习惯用ftp来 ...
- [译文]详细解析如何做一款成功的APP应用
译者注: 本文作者从自身丰富的应用开发设计实践经验和大量的优秀应用实例中,总结提炼了从产品概念.设计.开发到市场推广等一系列的相关原则,指导移动开发人员怎样来打造一款成功赚钱的应用.姗姗来迟的这篇文章 ...
- Spring,FetchType.LAZY和FetchType.EAGER什么区别?
1.FetchType.LAZY:懒加载,加载一个实体时,定义懒加载的属性不会马上从数据库中加载. 2.FetchType.EAGER:急加载,加载一个实体时,定义急加载的属性会立即从数据库中加载. ...
- go语言,安装包fetch error 问题解决方案
最近需要安装grequests,出现了下面的error [fdf@zxmrlc ~]$ go get github.com/levigross/grequests package golang.org ...
- Trie:字典树
简介 \(Trie\),又称字典树或前缀树,是一种有序树状的数据结构,用于保存关联数组,其中的键值通常是字符串. 作用 把许多字符串做成一个字符串集合,并可以对其进行快速查找(本文以求多少个单词是一个 ...
- 123apps-免费网络应用
前言 在Jianrry`s博客看见推荐这个网址,试用了一下感觉还不错.主要是完全免费!!就当备用吧 网站介绍 123apps 网站地址:https://123apps.com/cn/ 旗下网站: PD ...
- linux用命令行运行matlab的.mat文件
入m文件所在目录后,运行 $ matlab -nodesktop -nosplash -r matlabfile 只用文件名matlabfile,不能添加.m