笔记-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 ...
随机推荐
- .bak文件数据还原
.bak文件还原(见下图) 1.连接上数据库,右键数据库,选择新建数据库,输入你要还原数据库的名称 2.数据库右键-->任务-->还原-->数据库,弹出窗口选择[源设备],选择.ba ...
- OC与JS交互前言
OC与JS交互过程中,可能会需要使用本地image资源及html,css,js文件,这些资源应该如何被加载? 一.WebView加载HTML UIWebView提供了三个方法来加载html资源 1. ...
- 如何配置阿里Maven镜像
1.下载maven的zip解压,官方下载地址为:http://maven.apache.org/download.cgi 选择需要下载maven的版本就好了 2.到下载的maven路径下,conf/s ...
- Counting blessings can actually increase happiness and health by reminding us of the good things in life.
Counting blessings can actually increase happiness and health by reminding us of the good things in ...
- Python开发环境Wing IDE设置Python路径详解
在使用Wing IDE的时候,Python源代码取决于PYTHONPATH(无论是外部或通过内部改变sys.path系统设置),用户需要将路径设置到Wing IDE中. 这个值可以从项目菜单和工具栏的 ...
- cmd中不能输入中文
在命令行窗口下不能输入中文,只能输入英文,这是因为cmd.exe窗口启动时并没有启动conime.exe进程.事实上,这个进程容易被后门病毒利用,因此网上很多人都把它当成病毒看待,一些网上下载的系统就 ...
- MVC下c#对接微信公众平台开发者模式
在ashx文件中进行HttpContext的处理: using System; using System.Collections.Generic; using System.Linq; using S ...
- UVA Stacks of Flapjacks 栈排序
题意:给一个整数序列,输出每次反转的位置,输出0代表排序完成.给一个序列1 2 3 4 5,这5就是栈底,1是顶,底到顶的位置是从1~5,每次反转是指从左数第i个位置,将其及其左边所有的数字都反转,假 ...
- hadoop balance均衡datanode存储不起作用问题分析
前段时间因为hadoop集群各datanode空间使用率很不均衡,需要重新balance(主要是有后加入集群的2台机器磁盘空间比较大引起的),在执行如下语句: bin/start-balancer.s ...
- Java操作Redis工具类
依赖 jar 包 <dependency> <groupId>redis.clients</groupId> <artifactId>jedis< ...