Tag: 可迭代

iter()不工作datetime.now()

Python 3.6.1中的一个简单代码片段: import datetime j = iter(datetime.datetime.now, None) next(j) 收益: Traceback (most recent call last): File "<stdin>", line 1, in <module> StopIteration 而不是打印出每个next()的经典now()行为。 我已经看到类似的代码在Python 3.3中工作,我错过了什么或有更改3.6.1版本的东西?

发电机输出的长度

Python提供了一个很好的方法来获得渴望迭代的长度,即len(x) 。 但是我找不到任何类似于由发生器理解和函数表示的惰性迭代。 当然,写这样的东西并不难: def iterlen(x): n = 0 try: while True: next(x) n += 1 except StopIteration: pass return n 但我无法摆脱我正在重新实施自行车的感觉。 (当我input这个函数的时候,我心里想着一个念头:也许实际上没有这样的function,因为它“破坏了”它的论点,但是对我来说不是问题)。 PS:关于第一个答案 – 是的,像len(list(x))这样的东西也可以工作,但这大大增加了内存的使用。 PPS:重新检查…不顾PS,似乎我犯了一个错误,而尝试,它工作正常。 抱歉,添麻烦了。

使用Java 8 JDK将Iterable转换为Stream

我有一个接口,它返回java.lang.Iterable<T> 。 我想用Java 8 Stream API来处理这个结果。 然而,Iterable不能“stream”。 任何更好的主意如何使用stream(没有将Iterable转换为List)?

在循环中使用对象

为什么不可以使用循环中的对象? 或者这是一个浏览器错误? 这段代码在Chrome 42中不起作用,说undefined不是一个函数: test = { first: "one"} for(var item of test) { console.log(item) }

为什么Stream <T>不能实现Iterable <T>?

在Java 8中,我们有Stream <T>类,它好奇地有一个方法 Iterator<T> iterator() 所以你会希望它实现接口Iterable <T> ,它需要这个方法,但事实并非如此。 当我想使用foreach循环遍历Stream时,我必须做类似的事情 public static Iterable<T> getIterable(Stream<T> s) { return new Iterable<T> { @Override public Iterator<T> iterator() { return s.iterator(); } }; } for (T element : getIterable(s)) { … } 我在这里错过了什么?

在Python中,如何确定对象是否可迭代?

有没有一种方法可以isiterable ? 我目前find的唯一解决scheme就是打电话 hasattr(myObj, '__iter__') 但我不确定这是多么的愚蠢。