数据结构与算法

Posted Python编程和AI科学

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据结构与算法相关的知识,希望对你有一定的参考价值。

数据结构与算法部分这是最后一节了,其实Python cookbook这本书当做一本工具书也不错,当需要什么知识点的时候翻到相应的章节查阅,基本能找到合适的解决办法或是相应的知识点,但是更详细的教程其实在官网,这本书主要的内容都是脱胎于官网,截取其中比较常用的,需要的注意的点拿出来重点讨论,所以从书本的内部看起来没有章法,没有一个完整的主题,所有的python的知识都是被分割成很多细节,看起来有些杂乱无章,但纵观全书,所有的知识点也都有覆盖到,所以此书没有深究整个项目的进程,但提到的相关标准库,函数用法,可以了解之后在详细学习相关感兴趣的内容,官网上有更全的相关教程。下面就开始这章的最后一节吧!

1.12如何对数据同时做转换和换算,首先对数据做转换或是筛选,然后再调用一个换算函数,比如:sum,min,max等。

使用生成器表达式能优雅的解决这个问题,比如计算一个列表的平方和,例子如下:

简单快捷。上面的代码执行过程为首先遍历列表的每个元素,并同时对每个元素计算平方值后,sum函数进行求和,一步就解决了。在看下面的列子:

数据结构与算法(六)

运行结果如下:

数据结构与算法(六)

首先说一下这里的listdir函数,这个函数是遍历给定的目录名字下的文件名或是目录名并输出,其他的什么也不做,比如:

数据结构与算法(六)

这与我的此文件夹下的没有区别,图片太大,就不贴图了,比如这里的__pycache__就是一个文件目录名,里面也还有文件,所以listdir函数返回的是一个目录名称和文件名的对象。然后继续用if条件和字符串的endwith方法判断文件名字是否有‘.py’结尾的文件,如果有,则判断为python文件,打印“there be python ”。说到字符串方法,这里有一个方法要注意的就是join方法,下面是一个例子:

数据结构与算法(六)

   第二个出现异常,就是少了str函数,说明join方法只能用于字符串,有整数或是其他的数据类型就会出错。在前面我们讲过列表解析的内容,在这里不知道有没有发现,其实这里的几个例子中只用了一对括号,除去函数必须带的一对括号后没有了表达式解析的构造啊?这也是python的故意设计,再加上一对括号,中括号也能正常使用,转换为正真的元祖解析或是列表解析,python说这样的代码看起来太丑了,直接去掉,反正我要的是结果可以就好了,诚然,这样做计算数据量小的时候确实不错,但是在数据量很大的时候呢?表达式解析或创建一个巨大的数据结构,所以基于生成器的结局方法可以以迭代的方式转换数据,内存使用率较高。

另外很多换算函数比min和max,还有前面我们讲到排序函数sorted,他们都有一个关键字默认参数key。

1.13,将多个映射合并为单个映射,在多个字典或映射,在逻辑上将他们合并为一个单独的映射结构,以达到某些特定的目的,实现的代码详细如下:

数据结构与算法(六)

运行结果如下:

数据结构与算法(六)

这里的切片操作谁能操作,但实际上只能输出第一个字典的值,有点像集合的无重复元素一样,但其内部心的数据结构内部其实还是两个字典的键值对都存在,只不过在引用的时候的总是引用前面第一的值。所以在输出,在重新对y赋值时得到的结果也是第一个字典(也就是a)的值有变化。

所以在这里如果我们想更新一个字典,或者直接说把两个字典合并得到一个新的字典这种方法能使用,只不过需要注意引用的问题总是第一个,另外一个就是字典的update方法,例如:

结果如下:

这个方法跟collections包里ChainMan类不同的是,得到的真正的是一个集合的操作,就是说前面的键的值被后更新的字典相同键的值覆盖了,也就是更新了键值,而不是两个字典的键值对同时存在,所以各有优势,看各自所取。

以上是关于数据结构与算法的主要内容,如果未能解决你的问题,请参考以下文章

Golang数据结构与算法全能战士

数据结构与算法—算法与算法分析

python 数据结构与算法之排序(冒泡,选择,插入)

计算机常用英语词汇 —— 数据结构与算法

数据结构与算法(中文版) PDF 完整版下载

算法入门《数据结构与算法图解》+《我的第一本算法书》+《学习JavaScript数据结构与算法第3版》