Mosh Python课程笔记 第五章 Data Structures数据结构

5.1 Lists

列表中的每个对象可以是不同类型。

5.2 Accessing Items

访问与操作list的方式与访问与操作字符串的方式相似。

间隔切片

5.3 List Unpacking

会报错,等号左右的project数量必须相等,像下面这个一样。

其余不想要的参数都被存入名为other的列表

5.4 Looping over Lists

enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。每次迭代我们会得到一个元组,第一值为索引,第二个值为对应的列表值。

5.5 Adding or Removing Items

插入

在末尾插入

根据索引插入

删除

删除最后一个元素。

pop()也像是把元素给“取走”

按索引删除

按元素名删除第一次出现的该元素

5.6 Finding Items

查索引

若列表中没有查询的元素名,会报错

返回特定元素出现的次数

5.7 Sorting Lists

列表按升序排列

列表按降序排列

这是一个内置函数,可以传递任何可迭代参数。与  .sort() 方法不同,sorted函数不会修改原本的List,它将返回一个新的排序

降序排列和前面一样

python不会默认对列表中的元组进行排序,需要自己定义一个排序规则。

sort方法把每个元素都带入了key参数,然后再进行排列

5.8 Lambda Functions

隐函数写法

两种写法输出相同,隐函数写法更简洁

5.9 Map Function(内置函数)

map() 会根据提供的函数对指定序列做映射。

例如:

>>> map(square, [1,2,3,4,5])   # 计算列表各个元素的平方
[1, 4, 9, 16, 25]
>>> map(lambda x: x ** 2, [1, 2, 3, 4, 5])  # 使用 lambda 匿名函数
[1, 4, 9, 16, 25]

用法:

map函数会生成一个可迭代的map object。所以输出是这样的

把map()转化为列表就可以直接输出了

5.10 Filter Function

用法:filter() 函数用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表。

该接收两个参数,第一个为函数,第二个为序列,序列的每个元素作为参数传递给函数进行判断,然后返回 True 或 False,最后将返回 True 的元素放到新列表中。

5.11 List Comprehensions

这两行等价

这两行也等价

5.12 Zip Function内置函数

zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。

zip([iterable, ...])

如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用 * 号操作符,可以将元组解压为列表。

直接输出的是zip对象。

5.13 Stacks(堆栈)

5.14 Queues

5.15 Tuples

元组可以看作是一个只能读的List,不可增删改。 

5.16 Swapping Variables(交换变量)

5.17 Arrays

数组相比列表占用的内存更少,性能更快。

这个模块定义了一个对象类型,它可以简洁地表示一个基本值数组:字符、整数、浮点数。数组是序列类型,其行为与列表非常相似,只是存储在其中的对象类型受到了约束。类型是在对象创建时使用类型代码指定的,它是一个字符。

用谷歌搜索:python 3 typecode可以在官方文档中查询python中所有的typecode,typecode用来确定数组中元素的数据类型。

5.18 Sets

用大括号。集合没有重复元素且是无序的,不能通过索引访问。

5.19 Dictionaries

定义字典

字典的键是不可变元素,值可以是任意类型。

迭代 默认是key

5.20 Dictionary Comprehensions

这俩等价

5.21 Generator Expressions

generator对象所占内存更小,例如:下面包含1000个和100000个元素的generator都只需要120个字节的内存;但包含100000个元素的List则需要824464个字节的内存。所以在处理大数据集时,最好使用生成器表达式创建generator。需要注意的是,由于generator对象不在内存中存储项目,所以无法获得元素总数(len()函数不起作用),因为我们只能在生成器对象上访问这些项目的值

5.22 Unpacking Operator(拆包操作符)

引子:直接打印列表会有"[" 和"]",但想得到里面的元素就需要拆包。

拆包例子:

两个*可以拆解出字典的键值对。注意,如果拆解的两个字典中有相同的键,那么这个键所对应的值是最后拆的键的值,如上图。

练习

找出这个字符串中出现次数最多的字母

本人解:

Mosh老师解:​​​​​​​

  • 17
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值