问题标签 [iterable]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - Why there is no getFirst(iterable) method?
Iterables present two methods for getLast
but only one for getFirst
Is there are any design/implementation reason for breaking symmetry?
ruby - 如何将两个数组中的项目交织在一起?
我该怎么做:
2,3,4
然后将返回3,4,5 -> 2,3,4,3,4,5
。这只是一个例子,显然不是真正的用途。
相反,我希望它返回2,3 3,4 4,5 -> 2,3,3,4,4,5
。我希望对每个可能的数字值进行迭代;在这种情况下1
, 和2
是“数字”的两个可能值,然后再进行下一个看跌期权。
一种方法是创建两个列表,[2,3,4]
然后[3,4,5]
使用该zip
方法将它们组合起来,如[2,3,4].zip([3,4,5]) -> [2,3,3,4,4,5]
.
python - 为什么让一个类可迭代产生这个输出?
string - 禁止将字符串处理为可迭代
更新:
2006 年在 python.org 上提出了使内置字符串不可迭代的想法。我的问题有所不同,因为我只是偶尔尝试抑制此功能;整个线程仍然非常相关。
以下是Guido 的批评意见,str
他在试验的基础上实施了不可迭代:
[...] 我实现了这个(做起来真的很简单),但后来发现我必须修复大量迭代字符串的地方。例如:
sre 解析器和编译器使用 set("0123456789") 之类的东西,并遍历输入正则表达式的字符来解析它。
difflib 具有为两个字符串列表(文件的典型逐行差异)或两个字符串(典型的行内差异)或什至两个任何列表(对于通用序列差异)定义的 API .
optparse.py、textwrap.py、string.py 中的小改动。
而且我什至还没有到 regrtest.py 框架甚至可以工作的地步(由于 difflib 问题)。
我要放弃这个项目;补丁是SF patch 1471291。我不再赞成这个想法;这是不切实际的,而且我在 sre 和 difflib 中发现的用例驳斥了迭代字符串的充分理由的前提。
原始问题:
虽然字符串是可迭代的,这是语言的一个简洁特性,但当与鸭子类型结合使用时,它可能会导致灾难:
不会引发异常,除了isinstance(fields, str)
在无数地方进行测试外,没有简单的方法可以捕捉到这一点。在某些情况下,这个错误需要很长时间才能找到。
我想在我的项目中完全禁止字符串被视为可迭代。这是个好主意吗?可以轻松安全地完成吗?
也许我可以继承内置的子类,这样如果我希望它的对象被视为可迭代对象str
,我需要显式调用。get_iter()
然后,每当我需要一个字符串文字时,我都会创建一个此类的对象。
以下是一些切向相关的问题:
c# - 如何使类可迭代?
这是我的课
我想让该类可迭代以如下方式使用
myVarWordSimilarity
是csWordSimilarity
类型。所以我想迭代所有公共int
变量。我如何需要修改csWordSimilarity
类以使其像上面那样可迭代。
python - 创建存储/返回列表连接的缓存属性
如果预编译属性是第一次访问时计算并缓存的属性;我也想做同样的事情,但取而代之的是,获取多个列表并将它们编译为一个主列表。
对于一点背景,我目前正在构建一个站点 GAE/python/webapp2/jinja2。撇开细节不谈,我的路线列表越来越多。目前,我将静态路由、动态路由和重定向都混杂到一个列表中。
例子:
为了简单起见,我想将它们分组为:
目前我正在使用:
哪个有效,但我认为我需要将其包装在一个类属性中以使其可缓存。
到目前为止,我已经尝试过:
但我收到错误消息,“TypeError:'type' object is not iterable”。
所以我需要两件事:
- 一种将组合列表包装为类属性的方法
- 一种使属性可缓存的方法(最好作为装饰器)
我不想处理的是在每次调用时进行列表编译所产生的额外开销。
我已经阅读并使用了缓存的属性装饰器,但我不太清楚它们是如何工作的和/或它们是否可以很容易地适应列表。
注意:虽然是人为的,但这里的示例是为了让事情变得简单。这里的长期目标是根据应用配置提供 2 组不同的路由。
python - python通过返回嵌入的可迭代来使类可迭代
我在 python 中有一个类,它有一个可迭代的实例变量。我想通过迭代嵌入的可迭代对象来迭代类的实例。
我实现了如下:
我真的觉得__iter__()
在可迭代对象上调用该方法不太舒服,因为它是一种特殊方法。这是你将如何在 python 中解决这个问题还是有更优雅的解决方案?
generics - Hamcrest:当 iterableWithSize 失败时,它会给出一条错误消息,例如“got: com.xxx.MyIterClass$1@1970ae0”
在 hamcrest(1.3.RC2,没有 JUnit 依赖项)中,我无法将 iterableWithSize() 与 SpringDataNeo4j 库一起使用。
我有一个像这样Iterator
参数化的(扩展)Content
EndResult
在哪里
包 org.springframework.data.neo4j.conversion;公共接口 EndResult 扩展 Iterable {...}
并且Content
是一个@NodeEntity
Pojo。
在马克彼得斯的帮助下,我知道我应该这样称呼它
因为iterableWithSize
是在 your 的组件类型上键入的Iterable
,而不是在 iterable 本身的具体类型上键入的。
但是当测试运行时我得到
试图弄清楚 1) 我做错了什么,或者 2) hamcrest 或 3) Spring Data Neo4j 是否有错误,我检查了我手头的对象,它似乎可以Iterable
:
所以我猜它可能会得出结论,它的腿骨有问题。有没有人尝试过与 IsIterableWithSize 类似的东西?
java - 集合到可迭代
如何java.lang.Iterable
从 aSet
或 a 之类的集合中获取 a List
?谢谢!
java - Junit 实现 Iterable
我正在尝试对实现 Iterable 的类进行测试。当我去测试任何方法时,在 itorator 类中,比如 hasNext()、next()。所以当我调用 list.itorator().Next(); 没有任何反应,该节点是列表中的当前节点而不是下一个。但是当我做 ListIterator itrList = new ListIterator(list); 它里面的代码有效。我正在调用 public Iterator iterator() {return new ListIterator (this); 那么我没有正确/掌握什么?谢谢你的帮助。