笔记-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. 批量 多个JPG生产PDF .net C#

    using iTextSharp.text; using iTextSharp.text.pdf; using System; using System.Collections.Generic; us ...

  2. Oracle存储函数jdbc调用

    package com.jckb.procedure; import java.sql.CallableStatement; import java.sql.Connection; import ja ...

  3. java使用线程请求访问每次间隔10分钟连续5次,之后停止请求

    java使用线程请求访问每次间隔10分钟连续5次,收到相应的时候停止请求 package com.qlwb.business.util; /** * * * @类编号: * @类名称:RequestT ...

  4. struts2 第二天

    3.自动装配  零散属性:Action类中两个成员变量的名称和页面上表单元素name属性值保持一致.      规则:约定优于配置.  领域模型:两种配置    public class FirstA ...

  5. pure响应式布局

    <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...

  6. fancyBox高级进阶用法

    最近给客户做的一个项目中,客户要求弹窗的边界与页面某个区块边界平齐,但平齐之后,弹出的窗口就不是居中的情况了,研究之后,认为需要改写fancyBox的fancybox-wrap类中的top属性才能达到 ...

  7. 一、基于Qt的图像矩形区域改色

    Qt环境下图像的打开和涂色 一.设计目标 能够在 Qt QtCreator 环境下打开常用图像格式文件,诸如 bmp.jpg.png 图像等,然后将他们转化为 Qt 中的 QImage 类,并进行矩形 ...

  8. 梦织未来Windows驱动编程 第06课 驱动对磁盘文件的操作

    代码部分: 实现一个文件C:\\text.txt,并读取写入内容到文件,然后将文件设置为只读,并隐藏文件.代码如下: //MyCreateFile.c //2016.07.22 #include &l ...

  9. IOS UIActionSheet(底部 弹出框的使用)

    UIActionSheet *sheet = [[UIActionSheet alloc] initWithTitle:@"确定要注销?" delegate:self cancel ...

  10. 2017.12.20 Java中的 IO/XML学习总结 File类详细

    IO / XML 一.File类 1.定义/概念 Java是面向对象的语言,要想把数据存到文件中,就必须要有一个对象表示这个文件.File类的作用就是代表一个特定的文件或目录,并提供了若干方法对这些文 ...