笔记-python-tutorial-5.data structure

1.      data structure

1.1.    list operation

  1. list.append(x) #尾部添加一个元素
  2. list.extend(iterable)
  3. list.insert(I, x)
  4. list.remove(x)

remove the first item from the list whose value is x.if x is not exist return ValueError.

  1. list.pop([i])
  2. list.clear()
  3. list.index(x [, start, end]) #返回首个值为X的元素下标。
  4. list.count(x)
  5. list.sort(key=None, reverse=False)
  6. list.reverse()
  7. 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.    序列之间比较

相同类型的序列之间可以比较。

比较原则:

  1. 先比较前面的元素,如果不同则给出结果;
  2. 如果相同,则按序逐个比较;
  3. 如果所有元素相等,则序列相等;
  4. 如果某一序列是另一序列的初始子序列,则较短的序列小;
  5. 字符串比较使用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的更多相关文章

  1. [译]The Python Tutorial#5. Data Structures

    [译]The Python Tutorial#Data Structures 5.1 Data Structures 本章节详细介绍之前介绍过的一些内容,并且也会介绍一些新的内容. 5.1 More ...

  2. FAT文件系统规范v1.03学习笔记---2.FAT区之FAT数据结构(Fat Data Structure)

    1.前言 本文主要是对Microsoft Extensible Firmware Initiative FAT32 File System Specification中文翻译版的学习笔记. 每个FAT ...

  3. Python: tree data structure

    # 树结构 from pythonds.basic.stack import Stack #pip install pythonds from pythonds.trees.binaryTree im ...

  4. Python Tutorial笔记

    Python Tutorial笔记 Python入门指南 中文版及官方英文链接: Python入门指南 (3.5.2) http://www.pythondoc.com/pythontutorial3 ...

  5. LeetCode 笔记27 Two Sum III - Data structure design

    Design and implement a TwoSum class. It should support the following operations: add and find. add - ...

  6. Python Tutorial 学习(六)--Modules

    6. Modules 当你退出Python的shell模式然后又重新进入的时候,之前定义的变量,函数等都会没有了. 因此, 推荐的做法是将这些东西写入文件,并在适当的时候调用获取他们. 这就是为人所知 ...

  7. 【转】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 ...

  8. 211. Add and Search Word - Data structure design

    题目: Design a data structure that supports the following two operations: void addWord(word) bool sear ...

  9. 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 ...

随机推荐

  1. 使用原生javascript实现瀑布流

    简介 瀑布流布局是一种很常见的布局方式,他的主要视觉体验为图片元素等宽不等高,图片元素之间的水平排序参差不齐,而且随着滚动条的滚动,数据会进行异步的加载,这样的布局有两个好处,1-有视觉的冲击力,比较 ...

  2. SpringMVC03 ParameterMethodNameResolver(参数方法名称解析器) And XmlViewResolver(视图解析器)

    参数方法名称解析器 1.配置依赖包 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="ht ...

  3. 【翻译转载】【官方教程】Asp.Net MVC4入门指南(2):添加一个控制器

    2. 添加一个控制器 · 原文地址:http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/adding-a-c ...

  4. 《Head First 设计模式》之观察者模式——天气显示

    观察者模式(Observer) ——在对象之间定义一对多的依赖,这样一来,当一个对象改变状态,依赖它的对象都会收到通知,并自动更新. (出版者Subject+订阅者Observer=观察者模式) 特点 ...

  5. java.lang.IllegalArgumentException: Document base F:\personal\projects\annoMVC\web does not exist or is not a readable directory

    tomcat明明在d盘,怎么到F盘了...纳闷啊... 解决办法: 1停掉Tomcat服务2把/conf/Catalina/localhost下的文件删除掉(我在这个文件夹里发现了一个xml,指向了F ...

  6. .gitignore梳理

    参考来源: https://www.cnblogs.com/kevingrace/p/5690241.html 对于经常使用Git的朋友来说,.gitignore配置一定不会陌生.废话不说多了,接下来 ...

  7. SQLSERVER编译与重编译

    SQLSERVER编译与重编译 编译的含义 当SQLSERVER收到任何一个指令,包括查询(query).批处理(batch).存储过程.触发器(trigger) .预编译指令(prepared st ...

  8. js学习笔记之随机数

    一. JS获取任意两个数之间的随机数 参考:https://www.jb51.net/article/89629.htm 二.获取一个10–100范围的数 参考:https://zhidao.baid ...

  9. fifo - 先进先出的特殊文件, 又名管道

    描述 (DESCRIPTION) 一个 FIFO 特殊 文件 (又名 管道) 同 管道线 相似, 但是 它是 作为 文件 系统 的一部分 访问的. 可以 有 多个 进程 打开它 以供 读写. 当 进程 ...

  10. 19课 Vue第二节

    事件修饰符 stop 禁止冒泡once 单次事件prevent 阻止默认事件native 原生事件(组件)keycode|name 筛选按键   组合键 : @keydown.ctrl.enter s ...