- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
假设有一个集合:
list = [1,2,3]
这是内置方法吗
it1 = iter(list)
相当于
def niter(x):
for el in x:
yield el
it2 = niter(list)
编辑:
为了进一步澄清,我知道 iter()
可以排除更多参数,但原则上我想知道是否它与 yield 在 niter
最佳答案
没有。 iter(lst)
返回一个 list_iterator
对象,第二个例子是一个通用的 generator
。两者都做同样的事情,但方式不同。 xxx_iterator
对象知道它们正在迭代的结构,并使用其特定属性来实现它们的 next
方法。通用生成器对其参数(如果有)一无所知,并依赖它们来实现迭代器协议(protocol)。所以 iter(lst)
返回 真正的 迭代器,它实际上从列表中获取项目,而你的 niter
只是一个包装器,它仅仅将作业委托(delegate)给它的参数(恰好又是 list_iterator
)。
换句话说,iter(obj)
基本上是在说“亲爱的 obj,我需要一个知道如何迭代你的人”,而 for z in obj
是“我不知道”不关心如何迭代你,只需要给我值”。
关于Python:iter(x) 是否等同于 for el in x: yield el?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26528097/
判断这2个相似的Uris实际上相同的标准方法是什么? var a = new Uri("http://sample.com/sample/"); var b = new Uri("http://sam
这个问题在这里已经有了答案: Why does "true" == true show false in JavaScript? (5 个答案) 关闭 5 年前。 可能我很困惑,但我无法理解这个愚蠢
我是一名优秀的程序员,十分优秀!