Java迭代器实现Python中的range代码实例

如果要想迭代一个类的对象,那么该类必须实现 Iterable 接口,然后通过 iterator 方法返回一个 Iterator 实例。

Range 类实现了Python中的range的所有用法,如:range(10),range(5, 10),range(10, 0, -1),range(0, 10, 2)

如果再在 Range 类中定义静态的工厂方法,然后再静态导入工厂方法,就可以更方便地使用了。

使用实例:

for (int x : new Range(10, 0, -1)) {
  System.out.println(x);
}
/* 输出:
10
9
8
7
6
5
4
3
2
1
*/

代码:

class Range implements Iterable<Integer> {
  private final int start;
  private final int end;
  private final int step;

  public Range(int end) {
    this(0, end, 1);
  }

  public Range(int start, int end) {
    this(start, end, 1);
  }

  public Range(int start, int end, int step) {
    this.start = start;
    this.end = end;
    this.step = step;
  }

  @Override
  public Iterator<Integer> iterator() {
    return new Itr();
  }
  private class Itr implements Iterator<Integer> {
    int current = start;
    @Override
    public boolean hasNext() {
      return step > 0 ? current < end : current > end;
    }

    @Override
    public Integer next() {
      int t = current;
      current += step;
      return t;
    }
  }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Python进阶之迭代器与迭代器切片教程

    在前两篇关于 Python 切片的文章中,我们学习了切片的基础用法.高级用法.使用误区,以及自定义对象如何实现切片用法(相关链接见文末).本文是切片系列的第三篇,主要内容是迭代器切片. 迭代器是 Python 中独特的一种高级特性,而切片也是一种高级特性,两者相结合,会产生什么样的结果呢? 1.迭代与迭代器 首先,有几个基本概念要澄清:迭代.可迭代对象.迭代器. 迭代 是一种遍历容器类型对象(例如字符串.列表.字典等等)的方式,例如,我们说迭代一个字符串"abc",指的就是从左往右依次

  • Python迭代器模块itertools使用原理解析

    这篇文章主要介绍了Python迭代器模块itertools使用原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 介绍 今天介绍一个很强大的模块,而且是python自带的,那就是itertools迭代器模块. 使用 使用起来很简单,先导入模块 import itertools 下面,我们通过一些例子边学边练 三个无限迭代器 先告诉大家 control + C 可以强制停止程序哦 1.count() num = itertools.count

  • Python迭代器Iterable判断方法解析

    迭代器(Iterable):能直接作用于for循环的对象,统称可迭代对象.例如:list.tuple.set.str.generator都是可迭代对象. 1.如何判断一个对象是否可迭代: # 如何判断一个对象是可迭代对象 #导入collections.abc模块中的Iterable对象 import collections.abc # 判断str是否可迭代 a=isinstance('abc',collections.abc.Iterable) # 打印迭代结果 print(a) # 导入col

  • python列表生成器迭代器实例解析

    这篇文章主要介绍了python列表生成器迭代器实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 列表生成式 例如 有一个列表 a =[2,3,4,5] 需要将列表都加上1 #第一种方法 for i in map(lambda i:i+1,a) #第二种方法 for index,i in enumerate(a): a[index] +=1 print(a) #第三种,简单列表生成式 a = [i+1 for i in a] print(a

  • python 协程中的迭代器,生成器原理及应用实例详解

    本文实例讲述了python 协程中的迭代器,生成器原理及应用.分享给大家供大家参考,具体如下: 1.迭代器理解 迭代器: 迭代器是访问可迭代对象的工具 迭代器是指用iter(obj)函数返回的对象(实例) 迭代器是指用next(it)函数获取可迭代对象的数据 迭代器函数(iter和next) iter(iterable)从可迭代对象中返回一个迭代器,iterable必须是能提供一个迭代器的对象 next(iterator) 从迭代器iterator中获取下一了记录,如果无法获取下一条记录,则触发

  • python迭代器常见用法实例分析

    本文实例讲述了python迭代器常见用法.分享给大家供大家参考,具体如下: 迭代器 迭代是访问集合元素的一种方式.迭代器是一个可以记住遍历的位置的对象.迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束.迭代器只能往前不会后退. 1. 可迭代对象 我们已经知道可以对list.tuple.str等类型的数据使用for-in-的循环语法从其中依次拿到数据进行使用,我们把这样的过程称为遍历,也叫迭代. 但是,是否所有的数据类型都可以放到for-in-的语句中,然后让for-in-每次从中

  • Java迭代器实现Python中的range代码实例

    如果要想迭代一个类的对象,那么该类必须实现 Iterable 接口,然后通过 iterator 方法返回一个 Iterator 实例. Range 类实现了Python中的range的所有用法,如:range(10),range(5, 10),range(10, 0, -1),range(0, 10, 2) 如果再在 Range 类中定义静态的工厂方法,然后再静态导入工厂方法,就可以更方便地使用了. 使用实例: for (int x : new Range(10, 0, -1)) { Syste

  • 如何在python中处理配置文件代码实例

    配置文件是一种计算机文件,可以为一些计算机程序配置参数和初始设置,在内容形式上是一个一个键值对的记录. testcase.yaml文件: excel: filename: "testcase.xlsx" 将yaml库做二次封装: import yaml class HandleYaml: def __init__(self, filename=None): if filename is None: self.filename = 'testcase.yaml' else: self.f

  • 如何用Python中19行代码把照片写入到Excel中

    目录 1.前言 2.代码实战 2.1思路 2.2文件准备 2.3实战 2.4色值转换 2.5图片转换 2.6代码整合 2.7运行结果 3.总结 1.前言 这里说的,不是截取一张图片,粘贴到excel:而是通过像素写入到excel中,下面来看看具体的实现过程吧 2.代码实战 2.1 思路 我们今天要分享的,是把图片写入到excel中, 我们来捋一下思路: 准备源图片,目标excel: 通过Pillow 来读图片的取像素(RGB): 通过openpyxl 向excel cell内填充十六进制色值:

  • Java迭代器遍历list的方法及代码分析

    Java迭代器遍历list的方法是什么?动力节点小编来告诉大家.迭代器可用于遍历ArrayList.如果ArrayList中有更多元素,则hasNext()方法返回true,否则返回false.next()方法返回ArrayList中的下一个元素,如果没有下一个元素,则引发异常NoSuchElementException. 演示该程序的程序如下. import java.util.ArrayList; import java.util.Iterator; public class Demo {

  • Python中enumerate函数代码解析

    enumerate函数用于遍历序列中的元素以及它们的下标. enumerate函数说明: 函数原型:enumerate(sequence, [start=0]) 功能:将可循环序列sequence以start开始分别列出序列数据和数据下标 即对一个可遍历的数据对象(如列表.元组或字符串),enumerate会将该数据对象组合为一个索引序列,同时列出数据和数据下标. 举例说明: 存在一个sequence,对其使用enumerate将会得到如下结果: start        sequence[0]

  • Python 中的Selenium异常处理实例代码

    自动化测试执行过程中,难免会有错误/异常出现,比如测试脚本没有发现对应元素,则会立刻抛出NoSuchElementException异常.这时不要怕,肯定是测试脚本或者测试环境哪里出错了!那如何处理才是关键?因为一般只是局部有问题,为了让脚本继续执行,so我们可以用try...except...raise捕获异常.该捕获异常后可以打印出相应的异常原因,这样以便于分析异常原因. 下面将举例说明,当异常抛出后将信息打印在控制台,同时截取当前浏览器窗口,作为后续bug的依据给相应开发人员更好下定位问题

  • Python中的asyncio代码详解

    asyncio介绍 熟悉c#的同学可能知道,在c#中可以很方便的使用 async 和 await 来实现异步编程,那么在python中应该怎么做呢,其实python也支持异步编程,一般使用 asyncio 这个库,下面介绍下什么是 asyncio : asyncio 是用来编写 并发 代码的库,使用 async/await 语法. asyncio 被用作多个提供高性能 Python 异步框架的基础,包括网络和网站服务,数据库连接库,分布式任务队列等等. asyncio 往往是构建 IO 密集型和

  • Python中变量的输入输出实例代码详解

    1.变量的输入: input函数: input() input("请输入银行卡密码") password = input("请输入银行卡密码") 变量名 = input("XXX") # 用输入函数给变量赋值 输入函数给变量赋值举例: 注:所有input()得到的数据类型都是str字符串类型 2.变量类型的转换函数: • int(x) # str转整数 • float(x) # str转小数 转换举例: 3.输入综合练习: # 1.输入苹果的单价

  • Python 中的range(),以及列表切片方法

    range()函数配合循环一块使用很方便,今天来整理一下这个函数的主要用法,以及几个小例子 首先来看一下函数原型,非常简单: range(start,end [,step]) 或者连start都省略掉: range(end) 其中,start表示开始点,end表示结束点,真正结束的位置是end的前一个值,step表示步长. 例如: print(list(range(1,5))) #list函数是将range的值列表化,这时候的输出为 1,2,3,4 (没有5!即不包括最后一个end的值) pri

  • python中如何设置代码自动提示

    第一步:打开pycharm,如下图所示: 第二步:File→Power Save Mode,把下面如图所示的勾去掉: 第三步:去掉勾后,不再使用省电模式,新建一个 python文件,输入需要输入的单词的前面的字母,就会自动提示了.如下图: 知识点扩展: Python代码的自动补全 我所知道的python编辑器有Pydev.Pycharm.Sublime.Eric.还有就是Vim.Emacs(听说VS也行). Pydev用过一段时间(半个月左右).Pycharm用的时间不超过2天(30天试用版).

随机推荐