摘要: 迭代器切片 问题 解决方案 函数 itertools.islice() 正好适用于在迭代器和生成器上做切片操作。 迭代器和生成器不能使用标准的切片操作,因为它们的长度事先我们并不知道(并且也没有实现索引)。 函数 islice() 返回一个可以生成指定元素的迭代器,它通过遍历并丢弃直到切片开始索引位 阅读全文
posted @ 2019-03-19 13:42 最美的烟火 阅读(315) 评论(0) 推荐(1) 编辑
摘要: 手动遍历迭代器 问题 你想遍历一个可迭代对象中的所有元素,但是却不想使用for循环 解决方案 def manual_iter(): with open('test.txt') as f: try: while True: line = next(f) print(line, end='') exce 阅读全文
posted @ 2019-03-18 16:58 最美的烟火 阅读(408) 评论(1) 推荐(2) 编辑
摘要: 树的概念 树(tree) 是一种抽象的数据类型(ADT) 获知实作这种抽象数据类型的数据结构,用来模拟具有树状结构性质的数据集合。它是由 n n(n>=1) 个有限节点组成一个具有层次关系的集合。把它叫做“树” 是因为它看起来像一棵树,也就是根朝上,而叶朝下的。它具有以下特点: 每个节点有0 个或多 阅读全文
posted @ 2019-03-17 20:02 最美的烟火 阅读(364) 评论(0) 推荐(0) 编辑
摘要: 二分查找 二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。常见方法:顺序查找,二分查找,二叉树查找,哈希查找。 原理 折半查找法也称为二分查找法,它充分利用了元素间的次序关系,采用分治策略,可 阅读全文
posted @ 2019-03-16 21:32 最美的烟火 阅读(305) 评论(0) 推荐(0) 编辑
摘要: 栈 队列 栈的实现 顺序表实现 换个姿势,链表实现 队列 双端队列 操作: 阅读全文
posted @ 2019-03-16 18:29 最美的烟火 阅读(314) 评论(0) 推荐(0) 编辑
摘要: 链表 链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域 使用链表结构可以克服数组链表需 阅读全文
posted @ 2019-03-16 15:29 最美的烟火 阅读(389) 评论(0) 推荐(0) 编辑
摘要: 顺序表 在程序中,经常需要将一组(通常是同为某个类型的)数据元素作为整体管理和使用,需要创建这种元素组,用变量记录他们,传进传出函数等。一组数据中包含的元素个数可能发生变化(可以增加或删除元素)对于这种需求,最简单的解决方案是将这样一个元素看成一个序列,用元素在序列里的位置和顺序,表示实际应用中的某 阅读全文
posted @ 2019-03-15 21:18 最美的烟火 阅读(699) 评论(0) 推荐(0) 编辑
摘要: 快速排序(Quick Sort) 快速排序的基本思想:通过一趟排序将待排记录分隔成独立的两部分,其中一部分记录的关键字均比另一部分的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序 使用分治法来把一个串(list)分为两个子串(sub-lists)。具体算法描述如下: 从数列中挑出一 阅读全文
posted @ 2019-03-15 15:12 最美的烟火 阅读(228) 评论(0) 推荐(0) 编辑
摘要: 归并排序(Merge Sort) 归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表 阅读全文
posted @ 2019-03-15 14:58 最美的烟火 阅读(767) 评论(0) 推荐(0) 编辑
摘要: 希尔排序(Shell Sort) 希尔排序(Shell's Sort)是插入排序的一种又称“缩小增量排序”(Diminishing Increment Sort),是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法。该方法因D.L.Shell于1959年提出而得名。 希尔排序是把记录 阅读全文
posted @ 2019-03-15 14:50 最美的烟火 阅读(318) 评论(0) 推荐(0) 编辑