2.1——内置序列概览
Python标准库用C实现了丰富的序列类型: 容器序列(可存放不同类型的数据):list, tuple, collections.deque 扁平序列(只能容纳一种类型):str, bytes, bytearray, memoryview, array.array 容器序列存放的是它们所包含的任意类型的对象的引用,扁平序列里存放的是值而不是引用(扁平序列是一段连续的内存空间) 可变序列:list, bytearray, array.array, collections.deque和memoryview 不可变序列:tuple, str, bytes
2.2——列表推导和生成器表达式
1.其中ord()函数用于将字符转换成对应的ASCII值。
2.以上第一个程序是简单的,第二个程序就是列表推导式。
3.列表推导式不会再有变量泄露问题
4.列表推导式可以帮助我们把一个序列或是其他可迭代类型中的元素过滤或是加工,然后创建一个新的列表。
5.filter和map合起来能做的事情,列表推导式也能做。
5.1 map函数的用法
map()函数的原型是map(function,iterable,……),它的结果是返回一个列表, 这个函数的意义是将function应用于iterable的每一个元素,结果以列表的形式返回 1、参数function是一个函数名,是一种功能,为实现我们一些要求的转换,可以是python内置的,比如int,将值整型化,还可以是自定义的 2、参数iterable是一个可以迭代的对象,例如列表,元组,字典等;
用法一:
用法二:map函数返回的是一个可迭代的对象
用法三:当函数不进行任何处理时,以及函数返回为None时
用法四:当数量不一致时
5.2 filter函数的用法、
Python内置的函数能够从可迭代对象(如字典、列表)中筛选某些元素,并生成一个新的迭代器。可迭代对象是一个可以被“遍历”的Python对象,也就是说,它将按顺序返回各元素,这样我们就可以在r循环中使用它。
函数的基本语法是:
用法二:
由此可见filter函数返回的仅仅是一个可迭代对象而不是一个列表。
并且在上述用法中使用的是None作为第一个参数,哪filter的作用就是检查列表中的元素是否是False。
5.3 lambda关键字的用法
在Python中,我们使用lambda关键字来声明一个匿名函数,这就是为什么我们将它们称为“lambda函数”。匿名函数是指没有声明函数名称的函数。尽管它们在语法上看起来不同,lambda函数的行为方式与使用def关键字声明的一般函数相同。以下是Python中 lambda函数的特点: lambda函数可以接受任意数量的参数,但函数只能包含一个表达式。表达式是lambda函数执行的一段代码,它可以返回任何值,也可以不返回任何值。 lambda函数可以返回函数对象。 从语法上讲,lambda函数只能有一个表达式
为什么使用lambda 函数?
Lambda函数主要在短时间内需要一个函数时才使用。当你想要将函数作为参数传递给高阶函数(即以其他函数作为参数的函数)时,通常使用这种方法。
用法一:基础用法
用法二:当lambda作为返回值时
5.4利用列表推导式和map,filter函数的组合去实现一个列表
6.笛卡尔积
7.生成器表达式:虽然也可以通过列表推导式来初始化元组,数组或其他序列类型,但是生成器表达式是更好的选择。这是因为生成器表达式背后遵守了迭代器协议,可以逐个的产出元素,而不是先建立一个列表,然后再把这个列表传递到某个构造函数力,前面那种方式显然能节省内存。
8.
2.3元组不仅仅式不可变的列表
2.元组拆包
2.1
2.2使用*来处理剩下的元素