迭代器 iterable

#迭代器 iterable
#----可以理解为另外一种遍历,使用forin可以遍历的类型都是可迭代的类型 Iterable
from collections import Iterable #导入模块
from collections import Iterator
#可以进行迭代的类型不一定是可迭代对象:Iterator
#Iteratou 可迭代对象有一个特点:可以通过next获取下一个数据

#将那些不可以使用next获取对象的类型 转化成可以通过next 来进行获取的迭代对象
#转化方式 iter()
list0=[2,4,64,76]
ite=iter(list0)  #转化为Iterator对象
print(next(ite))  #再通过next获取数据
print(type(ite))  #查看类型

print(isinstance(list0,Iterator))  #检测类型结果  False
print(isinstance(iter(list0),Iterator))  #检测类型结果 True
#迭代器遍历与forin遍历的的区别
# --forin遍历-----是直接获取所有数据
#---迭代器------是惰性遍历,不获取不返回数据的情况
#迭代器获取元素的方式:next
ele=next(ite)
print(ele)
### Java 中 Iterator 和 Iterable 接口的区别及用法 #### Iterator 接口的作用与特性 `Iterator` 是一种用于遍历集合元素的接口,提供了按顺序访问集合中各个元素的方法。它允许开发者在不暴露底层数据结构的情况下逐个获取元素,并支持删除当前元素的操作。 - `hasNext()` 方法返回布尔值表示是否有下一个元素。 - `next()` 返回集合中的下一个元素。 - `remove()` 删除最近一次由 next() 返回的元素[^1]。 ```java List<String> list = Arrays.asList("A", "B", "C"); Iterator<String> iterator = list.iterator(); while (iterator.hasNext()) { String element = iterator.next(); System.out.println(element); } ``` #### Iterable 接口的功能描述 相比之下,`Iterable` 则定义了一个更高级别的抽象层次,专门用来标记那些能够被迭代的对象。实现了此接口意味着该对象可以通过增强for循环来进行遍历。任何实现了 `Iterable<T>` 的类都可以传递给接受此类参数的方法或构造函数,在这些地方可以直接使用 foreach 循环语句进行处理。 - 主要方法是 `iterator()`,其作用就是创建并返回一个新的 `Iterator` 实例以便于外部程序可以以此方式读取容器内的项目列表。 ```java public class CustomCollection implements Iterable<Integer> { private final List<Integer> data; public CustomCollection(List<Integer> input) { this.data = input; } @Override public Iterator<Integer> iterator() { return data.iterator(); } } // 使用自定义可迭代类型的例子 CustomCollection customData = new CustomCollection(Arrays.asList(1, 2, 3)); for (int item : customData) { System.out.print(item + ", "); } ``` #### 关键差异总结 - **职责不同**:`Iterator` 负责提供具体的迭代逻辑,而 `Iterable` 提供了一种机制让其他代码知道某个对象是可以被迭代的。 - **适用场景各异**:当需要控制如何以及何时执行迭代过程时应选择实现 `Iterator`;如果只是想要表明某事物具备可迭代属性,则只需简单地继承 `Iterable` 即可。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值