根据我的理解,您可以通过简单地定义两者 import java.util.Scanner;
public class NamaNilaiMaksimum {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String name[] = new String[6];
int number[] = new int[6];
int max = 0, largest = 0;
int as = 5;
for (int x = 1; x <= as; x++) {
System.out.print(" Name & number : ");
name[x] = in.nextLine();
number[x] = in.nextInt();
}
for (int x = 1; x <= as; x++) {
if (number[x] > largest) {
largest = number[x];
}
}
System.out.println("Result = " + largest);
}
}
方法和{{}来轻松地为用户定义的对象创建迭代器1}}方法。这很容易理解。
我也知道你可以通过简单地调用该容器上的__iter__
方法为任何内置容器手动构建迭代器。
基本上以任何容器为例,我不明白为什么他们不为自己定义__next__
方法。相反,当在容器(ergo,iter()
)上调用__next__
方法时,它返回类型为iter
的新对象,而不是容器本身。
最后,问题是,为什么容器对象将<container>.__iter__
功能委托给单独的<container_type>_iterator
对象而不是自己定义?
答案 0 :(得分:9)
如果容器是它自己的迭代器(例如提供了__next__
方法),那么你只能在一个地方迭代 。你不可能有独立的迭代器。每次调用__next__
都会给出容器中的下一个值,而您无法返回第一个值;你实际上只有一次只能在容器中产生值的生成器。
通过为给定容器创建单独的迭代器,您可以独立迭代:
>>> lst = ['foo', 'bar', 'baz']
>>> it1 = iter(lst)
>>> it2 = iter(lst)
>>> next(it1)
'foo'
>>> next(it2)
'foo'
>>> list(it1)
['bar', 'baz']
>>> next(it2)
'bar'