假设我们有一个Python字典d
,我们正在像这样迭代它:
for k,v in d.iteritems():
del d[f(k)] # remove some item
d[g(k)] = v # add a new item
(f
并且g
仅仅是一些黑盒转换。)
换句话说,我们尝试d
在使用对其进行迭代的同时向其中添加/删除项目iteritems
。
这个定义好吗?您能否提供一些参考来支持您的答案?
(很明显,如果损坏了该如何解决,所以这不是我所追求的角度。)
在python文档页面(针对2.7)上明确提到了
使用
iteritems()
而添加或删除字典条目可能会产生一种RuntimeError
或无法遍历所有条目。
对于Python 3同样如此。
这同样适用于iter(d)
,d.iterkeys()
与d.itervalues()
,我会去远的话说,它为for k, v in d.items():
(我不记得到底是什么for
做的,但我不会感到惊讶,如果实现调用iter(d)
)。
问题内容: 上面的python代码使输出与预期的完全不同。我想循环播放项目,以便在循环播放时可以跳过某个项目。 问题答案: 该代码试图在迭代列表时修改列表。我在任何情况下都不会这样做。 你可以使用运算符跳过列表中的每三个项目。 关于我的示例的其他要点与中的新语法有关。 我使用列表推导定义t,因为它在中有效(请参见下文) t是中的函数 现在,的行为类似于,但它适用于任意大小的值。后者不再存在。
问题内容: 我知道您不应在遍历列表时添加/删除项目。但是,如果不更改列表长度,是否可以修改要迭代的列表中的项目? 还是应该迭代列表索引?像那样: 问题是:以上两种方式都是允许的,还是只有第二种是没有错误的? 如果答案是肯定的,以下代码段是否有效? UPD。我想在python文档中看到“允许这些操作”而不是某人的假设。 问题答案: 可以这么说,您 不是在 修改列表。您只是在修改列表中的元素。我不认为
问题内容: 我在工作中使用的程序使用Python作为脚本语言。我试图在插入列表时修改列表感到困惑。另外,我在for循环中有一些逻辑,希望将列表的一部分从浮点数转换为文本。最后,所有文本必须正好为4个空格。在我为解决这个问题而进行的研究中,我遇到了许多其他的模拟问题,这些其他问题试图在迭代列表时尝试修改列表。但是我觉得我的问题很独特,因为我试图在遍历列表时将列表从浮点数修改为文本。 我实际上找到了解
我有一个json blob,如下所示: 这只是一个在这里发布的例子。在这个例子中,我们看到它提供了一个学校每年发生的所有事件的列表,该列表是一个累积列表,即上一年的事件也会被追加。我们知道的是,每年的活动都将以“会议开始”活动开始。我想通过这件事,以最新的一系列事件结束。请忽略事件名称中的时间戳或年份,它们只是示例,我在现实世界中没有此类信息。我需要的最终结果是: 所以,我想保留从“会话开始”事件
当我使用temp=iterator.next()时,sort方法会导致并发修改错误。你能帮我解决并发修改错误吗。我给出了整个类的代码,但我只是尝试完成sort方法。事先谢谢你的帮助。 我必须对ArrayList中的所有数组进行排序。
在Java8流中,允许我修改/更新内部的对象吗?为。: