python 将对象设置为可迭代的两种实现方法

1、实现 __getitem__(self)

class Library(object):
  def __init__(self):
    self.value=['a','b','c','d','e']

  def __getitem__(self, i):
    if i>=len(self.value):
      raise IndexError("out of index")
    value=self.value[i]
    return value

调用的时候,系统默认从0 开始传入,并使得i=i+1

2、实现 __iter__(self),next(self)

class Library2(object):
  def __init__(self):
    self.value=['a','b','c','d','e']
    self.i=-1
  def __iter__(self):
    return self
  def next(self):
    self.i += 1
    if self.i>=len(self.value):
      raise StopIteration
    return self.value[self.i]

 test=Library2()
 print test.next()
 print test.next()

在这里可以像生成器一样使用

以上这篇python 将对象设置为可迭代的两种实现方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • 详解Python中的内建函数,可迭代对象,迭代器

    Python中的内建函数和可迭代对象,迭代器 求值标识 id() #标识id 返回对象的唯一标识,CPython返回内存地址 hash() #哈希, 返回对象的哈希值 len(s) -->返回一个集合类型的元素个数 range(start,stop[,step]) -->返回一个从start开始到stop结束,步长为step的可迭代对象.step默认为1 类型判断 type() #返回对象的类型 isinstance(obj,class_or_tuple) ->True|False #判

  • python判断一个对象是否可迭代的例子

    如何判断一个对象是可迭代对象? 方法是通过collections模块的Iterable类型判断: >>> from collections import Iterable >>> isinstance('abc',Iterable) True >>> isinstance([1,2,3,4],Iterable) True >>> isinstance(1234,Iterable) False >>> isinstan

  • python中的迭代和可迭代对象代码示例

    什么是迭代(iteration)呢? 给定一个list或者tuple,通过for循环来遍历这个list或者tuple.这种遍历就是迭代(iteration).只要是可迭代的对象都可以进行迭代.怎么判断一个对象是否是可迭代的对象呢?可以用collections模块里面的iterable包的isinstance函数进行判断: >>> from collections import Iterable#载入模块 >>> isinstance('abc',Iterable) #字

  • 浅析python中的迭代与迭代对象

    什么是python的迭代 如果给定一个list或tuple,我们可以通过for循环来遍历这个list或tuple,这种遍历我们称为迭代(Iteration). (在Python中,迭代是通过for ... in来完成的) Python的for循环抽象程度要高于C的for循环,因为Python的for循环不仅可以用在list或tuple上,还可以作用在其他可迭代对象上. (可以直接作用于for循环的对象统称为可迭代对象(Iterable),如list.tuple.dict.set.str等.) l

  • Python可迭代对象操作示例

    本文实例讲述了Python可迭代对象.分享给大家供大家参考,具体如下: 1.列表生成式 list = [result for x in range(m, n)] g1 = (i for i in range(101)) print(type(g1)) print(g1) print(g1.__next__()) 输出: <class 'generator'> <generator object <genexpr> at 0x0000024E6AC08F10> 0 g1

  • python使用生成器实现可迭代对象

    本文实例为大家分享了python使用生成器实现可迭代对象的具体代码,供大家参考,具体内容如下 案例分析: 实一个可迭代对象的类,它能迭代出给定范围内所有的素数: pn = Number(1, 30) for k in pn: print(k) 结果为:2,3,5,7,11,13,17,19,23,29 如何解决这个问题? 将该类的__iter__方法实现成生成器函数,每次yield返回一个素数 #!/usr/bin/python3 class Number(object): def __init

  • 详解Python迭代和迭代器

    我们将要来学习python的重要概念迭代和迭代器,通过简单实用的例子如列表迭代器和xrange. 可迭代 一个对象,物理或者虚拟存储的序列.list,tuple,strins,dicttionary,set以及生成器对象都是可迭代的,整型数是不可迭代的.如果你不确定哪个可迭代哪个不可以,你需要用python内建的iter()来帮忙. >>> iter([1,2,3]) <listiterator object at 0x026C8970> >>> iter(

  • 浅谈Python中的可迭代对象、迭代器、For循环工作机制、生成器

    1.iterable iterator区别 要了解两者区别,先要了解一下迭代器协议: 迭代器协议是指:对象需要提供__next__()方法,它返回迭代中的元素,在没有更多元素后,抛出StopIteration异常,终止迭代. 可迭代对象就是:实现了迭代器协议的对象. 协议是一种约定,可迭代对象实现迭代器协议,Python的内置工具(如for循环,sum,min,max函数等)通过迭代器协议访问对象,因此,for循环并不需要知道对象具体是什么,只需要知道对象能够实现迭代器协议即可. 迭代器(ite

  • python 将对象设置为可迭代的两种实现方法

    1.实现 __getitem__(self) class Library(object): def __init__(self): self.value=['a','b','c','d','e'] def __getitem__(self, i): if i>=len(self.value): raise IndexError("out of index") value=self.value[i] return value 调用的时候,系统默认从0 开始传入,并使得i=i+1 2

  • java 中ArrayList迭代的两种实现方法

    java 中ArrayList迭代的两种实现方法 Iterator与for语句的结合来实现,代码很简单,大家参考下. 实现代码: package cn.us; import java.util.ArrayList; import java.util.Iterator; //ArrayList迭代的两种方法 //Iterator与for语句的结合 public class Test1 { public static void main(String[] args) { ArrayList arra

  • Android 设置应用全屏的两种解决方法

    在开发中我们经常需要把我们的应用设置为全屏,有两种方法,一中是在代码中设置,另一种方法是在配置文件里改! 一.在代码中设置: 复制代码 代码如下: package com.android.tutor;  import android.app.Activity;  import android.os.Bundle;  import android.view.Window;  import android.view.WindowManager;  public class OpenGl_Lesson

  • 基于python list对象中嵌套元组使用sort时的排序方法

    在list中嵌套元组,在进行sort排序的时候,产生的是原数组的副本,排序过程中,先根据第一个字段进行从小到大排序,如果第一个字段相同的话,再根据第二个字段进行排序,依次类推,当涉及到字母的时候,是按照字典序进行排序. 如下: a = [(1, 'B'), (1, 'A'), (1, 'C'), (1, 'AC'), (2, 'B'), (2, 'A'), (1, 'ABC')] a a.sort() a 输出结果为: [(1, 'B'), (1, 'A'), (1, 'C'), (1, 'AC

  • Python实现爬虫设置代理IP和伪装成浏览器的方法分享

    1.python爬虫浏览器伪装 #导入urllib.request模块 import urllib.request #设置请求头 headers=("User-Agent","Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0") #创建一个opener opene

  • Python单例模式的两种实现方法

    Python单例模式的两种实现方法 方法一  import threading class Singleton(object): __instance = None __lock = threading.Lock() # used to synchronize code def __init__(self): "disable the __init__ method" @staticmethod def getInstance(): if not Singleton.__instanc

  • js数组的五种迭代方法及两种归并方法(推荐)

    js数组的五种迭代方法及两种归并方法(推荐) <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta ht

  • C#实体对象序列化成Json并让字段的首字母小写的两种解决方法

    引言:最近在工作中遇到与某些API对接的post的数据需要将对象的字段首字母小写. 解决办法有两种: 第一种:使用对象的字段属性设置JsonProperty来实现(不推荐,因为需要手动的修改每个字段的属性) public class UserInfo { [JsonProperty("id")] public int Id{ set; get; } [JsonProperty("userName")] public string UserName{ set; get

  • python批量生成身份证号到Excel的两种方法实例

    身份证号码的编排规则 前1.2位数字表示:所在省份的代码: 第3.4位数字表示:所在城市的代码: 第5.6位数字表示:所在区县的代码: 第7~14位数字表示:出生年.月.日: 第15.16位数字表示:所在地的派出所的代码: 第17位数字表示性别:奇数表示男性,偶数表示女性: 第18位数字是校检码,计算方法如下: (1)将前面的身份证号码17位数分别乘以不同的系数.从第一位到第十七位的系数分别为:7-9-10-5-8-4-2-1-6-3-7-9-10-5-8-4-2. (2)将这17位数字和系数相

  • Python PCA降维的两种实现方法

    目录 前言 PCA降维的一般步骤为: 实现PCA降维,一般有两种方法: 总结 前言 PCA降维,一般是用于数据分析和机器学习.它的作用是把一个高维的数据在保留最大信息量的前提下降低到一个低维的空间,从而使我们能够提取数据的主要特征分量,从而得到对数据影响最大的主成分,便于我们对数据进行分析等后续操作. 例如,在机器学习中,当你想跟据一个数据集来进行预测工作时,往往要采用特征构建.不同特征相乘.相加等操作,来扩建特征,所以,当数据处理完毕后,每个样本往往会有很多个特征,但是,如果把所有数据全部喂入

随机推荐