Python学习笔记06-python的核心数据类型2

  • 模式匹配

import re

match = re.match('Hello[ \t]*(.*)world','Hello     Python world')

match.group(1)

'Python'

如果找到了这样的子字符串,与模式中括号包含的部分匹配的子字符串的对应部分保存为组。

     

  • 列表

列表也是序列的一种,跟字符串相比,它是可变的。大多数列表的方法都会就地改变列表对象,而不是创建一个新的列表。

sort方法默认是按照升序队列进行排序,而reverse对列表进行反转。

嵌套:

python核心数据类型的一个优秀的特性就是它们支持任意的嵌套。

列表解析:

列表解析表达式:列表解析是编写在方括号中的(提醒你在创建列表这个事实),并且由使用了同一个变量名的表达式和循环结构组成。

下面的语句的意思是把M中的每个列表元素中的第二个数放在一起组成一个序列

除此之外我们足以领略python 序列的强大指出,我们可以对序列元素进行任意数据类型组合,这简直就相当于给你细胞,就可以组建世界万物一样。这个也是python中的简单胜于复杂的提现。

括号中的解析语法也可以创建产生所需结果的生成器(迭代器)

内置函数map可以做类似的事情,产生对各项运行一个函数的结果。

  • 字典

python中的字典是完全不同的东西:它们不是序列,而是一种映射(mapping)。映射是一个其他对象的结合,是通过建值对来组成。映射中元素的顺序不是固定的,要获取值只能通过健来锁定,位置定位。(映射并没有任何可靠的从左到右的顺序。)

字典是python核心对象集合中的唯一的一种映射类型,也具有可变形---可以就地改变,并可以随需求增大或减小,就像列表那样。

通过键索引一个字典往往是Python中编写搜索的最快方法。

重访嵌套:

注意这里的最后一个操作是如何扩展潜入job列表的。因为job列表是字典所包含的一部分独立的内粗,它可以自由地增加或减少

通过这个例子我们可以看到python核心数据类型的灵活性。在python中,这样的嵌套显得特别简单--运行表达式创建了整个的嵌套对象结构。事实上,这是python这样的脚本语言主要有点之一。

在python中,当最后一次引用对象后(例如,将这个变量用其他的值进行赋值),这个对象所占用的内存空间将会自动清理掉。

从技术来说,python有一种叫做垃圾收集的特性,在程序运行时可以清理不再使用的内存,并将你从必须管理代码中这样的细节中解放出来。

如何查看对象的引用个数:

import sys

sys.getrefcount(object)

健的排序:for循环

因为字典没有严格的顺序,如果我们又想要字典的顺序,比较好的方法就是通过字典的keys方法收集一个健的列表,使用列表的sort方法进行排序,然后使用for循环走个进行显示结果

while循环:

python的while循环是一种更为常见的拍讯循环工具,它不仅限于便利排序

迭代和优化:

迭代协议:这是python中无处不在的一个概念,表示在内存中物理存储的序列,或一个在迭代操作情况下每次产生一个元素的对象。

如果一个对象在响应next之前先用一个对象对iter内置函数作出响应,那么它属于后一种枪框。生成器解析表达式就是这样的一个对象。

注意:列表解析和相关的函数编程工具,如map和filter,通常运行得比for循环快(也许快倍)

map()函数表达式的用法:map()是python内置的高阶函数,它接受一个函数f和一个list,并通过把函数f依次作用在list的每个元素上,得到一个新的list并返回。

注意:map()函数不改变原油的list,而是返回一个新的list

利用map()函数,可以把一个list转换为另一个list,只需要传入转换函数。

当列表不止一个时,map可以并行(注意是并行)地对每个seq执行如下图所示的过程:

python3中可以处理类表长度不一致的情况,但无法处理类型不一致的情况

通过上面的例子我们可以看出,map并不是特殊的处理运算,也是遵循python的计算规则,比如2*‘55’ 这个是可以支持的。但是“55” + 2 是不支持的。所以会报错。

特殊用法,做类型转换:

list(map(int,"12345"))

如果函数是None,自动假定一个‘indetity’函数,这时候就是模仿zip()函数。

这时候None类型不是一个可以调用的对象。所以他没法返回值。

目的是将多个列表相同位置的元素归并到一个远足。如:

但是在python3中,返回一个迭代器,所以它其实是不可调用的。

猜你喜欢

转载自blog.csdn.net/qq_34608423/article/details/88426951