笔记-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. python.h没有那个文件或目录解决方法

    我用的是Deepin Linux,这应该是linux平台的问题,别的linux os也是执行安装,命令不同而已,windows和Mac不太清楚. 如果你使用的是python2.x,那么使用下面的语句: ...

  2. aapt.exe finished with non-zero exit value 1

    在一个APP 中导入 严振杰的 ALBUM,出现错误 在网上找了各种,最后在 stackoverflow上找到这样的说法: -Go to File->project structure-> ...

  3. Js/Jquery获取input file的文件名

    html代码:     <input type="file" name="file" id="file" class="in ...

  4. 移动端真机调试工具--DebugGap (VIDE)

    越来越多的移动端开发工作,需要我们有一个好的调试工具,以解决各类真机才会遇到的BUG,最近使用了一款DebugGap 的工具,非常方便,在这里推荐给大家. 官网地址 DebugGap  . 按需求下载 ...

  5. Vue日历

    Vue生成日历,根据返回值将日期标红 HTML: <h1>CSS 日历</h1> <div id="calendar"> <div cla ...

  6. 通过 java的 esl 连接 freeswitch

    一.目标修改event_socket配置,使之能够建立远端ESL链接. 二.步骤 1. vim ../autoload_configs/event_socket.conf.xml 2. 默认的监听地址 ...

  7. PHP函数:method_exists和function_exists

    method_exists 检查类的方法是否存在 bool method_exists ( mixed $object , string $method_name ) 检查类的方法是否存在于指定的ob ...

  8. Python爬虫实战:爬糗事百科的段子

    一个偶然的机会接触了Python,感觉很好用,但是一直在看c++啥的,也没系统学习.用过之后也荒废了许久.之前想建个公众号自动爬糗事百科的段子,但是没能建起来,真是尴尬,代码上传的服务器上之后,不能正 ...

  9. 关于android界面菜单,project显示问题

    刚用android studio不久,遇到了一个问题:界面菜单project不小心被关掉了,百度各种搜索无结果.我想大多数人都遇到过类似问题,此类问题其实很简单但是对于初学者来说就有点苦恼了.所以在此 ...

  10. 64位系统中为VS2012添加OpenGL工具包

    之前一直都是按照网上教程进行的添加,以前使用的系统是32位的,所以一直都没有问题.最近换了64位系统,要使用到OpenGL,于是就又进行了原来的工作,但进行测试时,老是失败: 但是在目录:" ...