本文介绍如何自定义迭代器,涉及到类的运算符重载,包括 的索引迭代,以及 、`__next__ __contains__`,如果不了解这些知识可跳过本文。 索引迭代方式 索引取值和分片取值 元组、列表、字典、集合、字符串都支持索引取值操作和分片操作。 分片操作实际上将一个slice对象当作索引位传递给 ...
分类:
编程语言 时间:
2019-01-13 18:10:58
阅读次数:
183
我们之前一直在用可迭代对象进行操作,那么到底什么是可迭代对象.我们现在就来讨论讨论可迭代对象.首先我们先回顾下我们 熟知的可迭代对象有哪些:str list tuple dic set 那为什么我们称他们为可迭代对象呢?因为他们都遵循了可迭代协议,那什么又是可迭代协议呢.首先我们先看一段错误的代码: ...
分类:
编程语言 时间:
2019-01-11 20:07:30
阅读次数:
156
一,迭代器 1.1什么是可迭代对象? 字符串、列表、元组、字典、集合都可以被for循环,说明他们都是可迭代的。 我们怎么来证明这一点呢? from collections import Iterable li = [1, 2, 3, 4] t = (1, 2, 3, 4) d = {1, 2, 3, ...
分类:
编程语言 时间:
2019-01-02 23:29:32
阅读次数:
212
1.1迭代器 什么是迭代器: 迭代器是一个可以记住遍历的位置对象 迭代器对象从集合的第一个元素元素开始访问,直到所有元素被访问完结束,迭代器只能往前不会后退。 迭代器有两个基本方法:iter ,next 方法 内置函数iter(),next() 本质上都是用的对象.__iter__(),__next ...
分类:
编程语言 时间:
2018-12-24 10:23:55
阅读次数:
162
python 迭代器和生成器 python 迭代器和生成器 python 迭代器和生成器 python 迭代器和生成器 一、可迭代协议:可以被迭代要满足要求的就叫做可迭代协议。内部实现了__iter__方法 iterable:可迭代的 对应的标志 什么叫迭代?:一个一个取值,就像for循环一样取值 ...
分类:
其他好文 时间:
2018-12-19 17:57:58
阅读次数:
175
在了解Python的数据结构时,容器(container)、可迭代对象(iterable)、迭代器(iterator)、生成器(generator)、列表/集合/字典推导式(list,set,dict comprehension)众多概念参杂在一起,难免让初学者一头雾水,我将用一篇文章试图将这些概念 ...
分类:
编程语言 时间:
2018-12-18 23:47:50
阅读次数:
270
本篇文章简单谈谈可迭代对象,迭代器和生成器之间的关系。 三者简要关系图 可迭代对象与迭代器 刚开始我认为这两者是等同的,但后来发现并不是这样;下面直接抛出结论: 1)可迭代对象包含迭代器。2)如果一个对象拥有__iter__方法,其是可迭代对象;如果一个对象拥有next方法,其是迭代器。3)定义可迭 ...
分类:
其他好文 时间:
2018-12-17 11:42:47
阅读次数:
190
在学习python数据结构的过程中,可迭代对象,迭代器,生成器这些概念参杂在一起,难免让初学者一头雾水,今天就来捋捋这些概览。
分类:
编程语言 时间:
2018-12-13 01:12:56
阅读次数:
250
1.序列组成的数组 容器序列:list,tuple,collection.deque 这些序列能存放不同类型的数据 扁平序列:str,bytes等 这些序列只能容纳一种类型 按是否可变来分类: 1.可变序列:list,set,dict 2.不可变序列:tuple,set 1.1列表推导和生成器表达式 ...
分类:
其他好文 时间:
2018-12-10 23:00:30
阅读次数:
257
一、楔子 假如我现在有一个列表l=['a','b','c','d','e'],我想取列表中的内容,有几种方式? 首先,我可以通过索引取值l[0],其次我们是不是还可以用for循环来取值呀? 你有没有仔细思考过,用索引取值和for循环取值是有着微妙区别的。 如果用索引取值,你可以取到任意位置的值,前提 ...
分类:
编程语言 时间:
2018-12-09 22:08:18
阅读次数:
223