第3章 Python的数据结构、函数和文件

1.元组是一个固定长度,不可改变的Python序列对象

tup = 4, 5, 6
nested_tup = (4, 5, 6), (7, 8) #复杂元组

2.tuple 可以将任意序列或迭代器转换成元组

In : tup = tuple('string')
In : tup
Out: ('s', 't', 'r', 'i', 'n', 'g')

3.元组中的对象不能修改,列表除外

4.+ 可以将元组串联起来

5.元组 * 一个整数,像列表一样,会将几个元组的复制串联起来

6.将元组赋值给类似元组的变量,Python会试图拆分等号右边的值

7.在Python中,替换可以这样做:b, a = a, b

In : seq = [(1, 2, 3), (4, 5, 6), (7, 8, 9)]
In : for a, b, c in seq::     print('a={0}, b={1}, c={2}'.format(a, b, c))
a=1, b=2, c=3
a=4, b=5, c=6
a=7, b=8, c=9

8.*obj 抓取任意长度列表的位置参数, Python程序员会将不需要的变量使用下划线 a, b, *_ = values

In : values = 1, 2, 3, 4, 5
In : a, b, *rest = values
In : rest
Out: [3, 4, 5]

9.count 统计某值出现的频率

10.列表的长度可变、内容可以被修改。可以用 [ ] 定义或list()

11.append 在列表末尾添加元素

12.insert 在特定的位置插入元素

13.pop它移除并返回指定位置的元素

14.remove去除某个值,会先寻找第一个值并除去

15.in 可以检查列表是否包含某个值, not in 相反

16.extend 追加元素

17.sort 排序函数,obj.sort(key=len)按长度对字符串进行排序

18.bisect 模块支持二分查找,向已排序的列表插入值(需要 import)

In : import bisect
In : c = [1, 2, 2, 2, 3, 4, 7]
In : bisect.insort(c, 6)#插入某值,并保持排序
In : c
Out: [1, 2, 2, 2, 3, 4, 6, 7]
In : bisect.bisect(c, 6)#可以查询想要插入值,将要插入的位置
Out: 7

19.切片不包含结束元素,seq[1:5],seq[:5],seq[3:],负数表示从后往前数,第多少个

20.seq[::step],两个冒号后,使用step变量,可以间隔取数,seq[::-1]可以逆转列表或元组

21.enumerate函数

for i, value in enumerate(collection):# i 跟踪当前项的序号In : some_list = ['foo', 'bar', 'baz'] #添加位置信息,整合成一个字典
In : mapping = {}
In : for i, v in enumerate(some_list):....:     mapping[v] = i
In : mapping
Out: {'bar': 1, 'baz': 2, 'foo': 0}

22.sorted 函数可以从任意序列的元素返回一个新的排好序的列表

23.zip函数可以将多个列表、元组或其它序列,成对组合成一个元组列表,元素的个数取决于最短的序列

In : pitchers = [('Nolan', 'Ryan'), ('Roger', 'Clemens'),('Schilling', 'Curt')]
In : first_names, last_names = zip(*pitchers)#行的列表转换为列的列表
In : first_names
Out: ('Nolan', 'Roger', 'Schilling')
In : last_names
Out: ('Ryan', 'Clemens', 'Curt')

24.reversed函数从后向前迭代一个序列

25.字典

d1 = {} #空字典
d1 = {'a' : 'some value', 'b' : [1, 2, 3, 4]} #创建字典
In : d1[7] = 'an integer' #添加元素
In : 'b' in d1 #检查列表和元组是否包含某个值的方法
In : del d1[7] #删除某元素
ret = d1.pop('b')#删除键的同时返回键对应的值
list(d1.keys()) #将键取出
list(d1.values()) #将值取出
d1.update({'b' : 'foo', 'c' : 12}) #将一个字典与另一个融合,有相同键,则会覆盖

26.两个序列配对组合成字典

mapping = {} #方法一
for key, value in zip(key_list, value_list):mapping[key] = value
mapping = dict(zip(range(5), reversed(range(5)))) #方法二

27.dict的方法get和pop可以取默认值进行返回,value = some_dict.get(key, default_value)

28.setdefault 方法, 和collections模块的defaultdict

In : words = ['apple', 'bat', 'bar', 'atom', 'book']
In : by_letter = {}
In : for word in words::     letter = word[0]:     if letter not in by_letter::         by_letter[letter] = [word]:     else::         by_letter[letter].append(word):
In : by_letter
Out: {'a': ['apple', 'atom'], 'b': ['bat', 'bar', 'book']}for word in words: #setdefault方法改进letter = word[0]by_letter.setdefault(letter, []).append(word)from collections import defaultdict  #collections模块的defaultdict改进
by_letter = defaultdict(list)
for word in words:by_letter[word[0]].append(word)

29.字典的值可以是任意Python对象,而键通常是不可变的标量类型(整数、浮点型、字符串)或元组(元组中的对象必须是不可变的)。这被称为“可哈希性”。可以用hash函数检测一个对象是否是可哈希的(可被用作字典的键)

30.要用列表当做键,可以将列表转化为元组,只要内部元素可以被哈希,它也就可以被哈希,d[tuple([1, 2, 3])] = 5

31.集合,集合是无序的不可重复的元素的集合,set([2, 2, 2, 1, 3, 3]) 或{2, 2, 2, 1, 3, 3} 创建

32.常用的集合方法

33.与字典类似,集合元素通常都是不可变的。要获得类似列表的元素,必须转换成元组

34.a.issubset(b)  b.issuperset(a) 测一个集合是否是另一个集合的子集或父集

35. == 判断集合是否相等

36.推导式

In :strings = ['a', 'as', 'bat', 'car', 'dove', 'python']
In : [x.upper() for x in strings if len(x) > 2]
Out: ['BAT', 'CAR', 'DOVE', 'PYTHON']
#字典的推导式
dict_comp = {key-expr : value-expr for value in collection if condition}
#集合的推导式
set_comp = {expr for value in collection if condition}

37.map函数

In : set(map(len, strings))
Out: {1, 2, 3, 4, 6}

38.

《Python数据分析》第二版.第三章.[学习笔记][Jupyter notebook]相关推荐

  1. 《Python数据分析》第二版.第二章.[学习笔记][Jupyter notebook]

    第2章 Python语法基础,IPython和Jupyter Notebooks 2.2 IPython 基础 1. 变量前后使⽤问号?,可以显示对象的信息 2. ??会显示函数的源码 3. %run ...

  2. 数据结构(C语言)第二版 第三章课后答案

    数据结构(C语言)第二版 第三章课后答案 1~5 C C D A A 6~10 D A B C D 11~15 D D B C B 1.选择题 (1)若让元素1, 2, 3 , 4, 5 依次进栈,则 ...

  3. 多维随机变量及其分布——《概率论及其数理统计》第三章学习笔记

    多维随机变量及其分布--<概率论及其数理统计>第三章学习笔记 文章目录 多维随机变量及其分布--<概率论及其数理统计>第三章学习笔记 前言 MindMap 二维随机变量 定义与 ...

  4. 工程伦理第三章学习笔记2020最新

    工程伦理第三章学习笔记2020最新 因为之前自己在网上找答案总是觉得费劲,一道一道的找,很慢,突然找到了前两章的答案,感觉有一种前人种树后人乘凉的感觉,于是自己在艰难找完第三章习题并全对的情况下,将题 ...

  5. 周志华西瓜书第三章学习笔记

    第三章学习笔记 文章目录 第三章学习笔记 1.知识脉络 2.我的笔记 参考 1.知识脉络 2.我的笔记 这一章公式推导实在太多了,需要补充的推导过程也有很多,就不写电子档了.扩展公式推导和LDA部分补 ...

  6. 学完可以解决90%以上的数据分析问题-利用python进行数据分析第二版(代码和中文笔记)...

    <利用python进行数据分析>是数据分析的基础教程,绝大部分数据分析师的入门教材,目前已经升级到第二版.本站搜集了教材的第二版原版代码进行中文翻译和注释,并做了一定的笔记.基本上只需要看 ...

  7. 数据结构c语言版第二版第三章课后答案,数据结构(C语言版)习题集答案第三章.doc...

    数据结构(C语言版)习题集答案第三章.doc 习题三3.1 3.10 3.13 3.5 3.6 3.15 3.17 3.19 3.24 3.29 3.31 3.51 给定操作序列P1P2P3PiPn( ...

  8. 【从0开始入门python】一个半月的三万字学习笔记汇总!!!

    python学习 DAY01-DAY04基础操作 DAY05-DAY09基本模块 常用pip源 (1)阿里云 http://mirrors.aliyun.com/pypi/simple/ (2)豆瓣 ...

  9. 孙鑫VC++深入详解第三章学习笔记

    第三章 3.1创建MFC AppWizard 如何利用vs2019创建MFC应用见参考文献[1] 需要注意的地方有 [1] 创建MFC单文档应用程序 [2]开启类视图窗口 3.2基于MFC的程序框架剖 ...

最新文章

  1. canonicalize_url()方法格式化 url
  2. Tensorflow从入门到精通之——Tensorflow基本操作
  3. 基于python实现opencv视频去抖动
  4. Sqlcmd连接SQL方式(远程机器直接查询SQL)
  5. 利用boost做string到wstring转换,以及字符集转换
  6. RuoYi-Cloud 部署篇_03(linux环境 Oracle +nginx版本)
  7. JavaScript截断/切片/修剪掉字符串中的最后一个字符
  8. linux服务器查看系统装到哪个盘,查看linux安装了什么服务器地址
  9. CentOS 7 Tomcat 安装
  10. 制作效果远超CHM的帮助文档制作软件,速看!
  11. 印象笔记 离线版_印象笔记离线版
  12. RAII惯用法:C++资源管理的利器
  13. Are You a Software Architect?
  14. python外卖点餐系统毕业设计开题报告
  15. 【毕业设计】 基于单片机的移动共享充电宝设计与实现 - 物联网嵌入式 stm32 c51
  16. 关于幂级数求和是否弃用首项的理解
  17. 定义一个数组存储10个上面描述的小怪兽,每个小怪兽的名字为(小怪兽+数组下标)
  18. php制作网页教程pdf,php中pdf页面制作方法
  19. PYTHON BZ2 安装
  20. SQL效率轻优化【白丁水笔知其然】

热门文章

  1. powershell 设置代理_WSL2中使用proxychains ng代理加速
  2. codeforces 1220E
  3. Django APIView源码解析
  4. jsvascript 学习 二 操作符
  5. MySQL用户管理和权限设置
  6. 关系型数据库知识小结
  7. 从头开始-02.C语言基础
  8. ORM Model查询页生成
  9. struts2+spring+hibernate框架整合与项目
  10. IT行业里有这么多聪明人,他们之间的区别在哪里?