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老师解: