问题标签 [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.

0 投票
2 回答
27132 浏览

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?

0 投票
3 回答
447 浏览

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].

0 投票
1 回答
95 浏览

python - 为什么让一个类可迭代产生这个输出?

可能重复:
为什么在类上定义getitem使其在 python 中可迭代?

我得到输出:

迭代 b 类的实例,发出整数。这是为什么?

(在查看为什么在类上定义 __getitem__ 使其在 python 中可迭代时遇到上述程序? )

0 投票
5 回答
5997 浏览

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()然后,每当我需要一个字符串文字时,我都会创建一个此类的对象。

以下是一些切向相关的问题:

如何判断 python 变量是字符串还是列表?

如何判断变量是可迭代的但不是字符串

0 投票
2 回答
24128 浏览

c# - 如何使类可迭代?

这是我的课

我想让该类可迭代以如下方式使用

myVarWordSimilaritycsWordSimilarity类型。所以我想迭代所有公共int变量。我如何需要修改csWordSimilarity类以使其像上面那样可迭代。

0 投票
2 回答
505 浏览

python - 创建存储/返回列表连接的缓存属性

如果预编译属性是第一次访问时计算并缓存的属性;我也想做同样的事情,但取而代之的是,获取多个列表并将它们编译为一个主列表。

对于一点背景,我目前正在构建一个站点 GAE/python/webapp2/jinja2。撇开细节不谈,我的路线列表越来越多。目前,我将静态路由、动态路由和重定向都混杂到一个列表中。

例子:

为了简单起见,我想将它们分组为:

目前我正在使用:

哪个有效,但我认为我需要将其包装在一个类属性中以使其可缓存。

到目前为止,我已经尝试过:

但我收到错误消息,“TypeError:'type' object is not iterable”。

所以我需要两件事:

  1. 一种将组合列表包装为类属性的方法
  2. 一种使属性可缓存的方法(最好作为装饰器)

我不想处理的是在每次调用时进行列表编译所产生的额外开销。

我已经阅读并使用了缓存的属性装饰器,但我不太清楚它们是如何工作的和/或它们是否可以很容易地适应列表。

注意:虽然是人为的,但这里的示例是为了让事情变得简单。这里的长期目标是根据应用配置提供 2 组不同的路由。

0 投票
1 回答
3506 浏览

python - python通过返回嵌入的可迭代来使类可迭代

我在 python 中有一个类,它有一个可迭代的实例变量。我想通过迭代嵌入的可迭代对象来迭代类的实例。

我实现了如下:

我真的觉得__iter__()在可迭代对象上调用该方法不太舒服,因为它是一种特殊方法。这是你将如何在 python 中解决这个问题还是有更优雅的解决方案?

0 投票
1 回答
757 浏览

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是一个@NodeEntityPojo。

在马克彼得斯的帮助下,我知道我应该这样称呼它

因为iterableWithSize是在 your 的组件类型上键入的Iterable,而不是在 iterable 本身的具体类型上键入的。

但是当测试运行时我得到

试图弄清楚 1) 我做错了什么,或者 2) hamcrest 或 3) Spring Data Neo4j 是否有错误,我检查了我手头的对象,它似乎可以Iterable

所以我猜它可能会得出结论,它的腿骨有问题。有没有人尝试过与 IsIterableWithSize 类似的东西?

测试代码是https://github.com/anodynos/SpringDataNeo4jTrials/blob/master/src/test/java/sdnTests/test/HamcrestIteratorSizeTest.java

0 投票
6 回答
115997 浏览

java - 集合到可迭代

如何java.lang.Iterable从 aSet或 a 之类的集合中获取 a List?谢谢!

0 投票
2 回答
1390 浏览

java - Junit 实现 Iterable

我正在尝试对实现 Iterable 的类进行测试。当我去测试任何方法时,在 itorator 类中,比如 hasNext()、next()。所以当我调用 list.itorator().Next(); 没有任何反应,该节点是列表中的当前节点而不是下一个。但是当我做 ListIterator itrList = new ListIterator(list); 它里面的代码有效。我正在调用 public Iterator iterator() {return new ListIterator (this); 那么我没有正确/掌握什么?谢谢你的帮助。