Python -- 如何强制枚举从 1 开始 -- 或者解决方法?

Python -- how to force enumerate to start at 1 -- or workaround?

我有一个简单的 for 循环:

for index, (key, value) in enumerate(self.addArgs["khzObj"].nodes.items()):

并且我想在每第 3 个项目之后启动一个新的 wx 水平 boxsizer,以创建一个面板,每个面板有 3 个节点,并继续尽可能多的节点。显而易见的解决方案是:

if index % 3 == 0: add a horizontal spacer

但是枚举从 0 开始,所以 0 % 3 == 0 并且它会立即开始一个新行。我试过:

if index == 0: index = index + 1

但这当然行不通,因为它创建了一个新的 var,而不是更改原来的——所以我得到 1、1、2、3、4 等,这行不通,因为我会在我命中索引 % 3 == 0 之前获得 4 个节点。

关于如何做到这一点有什么建议吗?这不是一个大的枚举,通常只有大约 10-15 个项目。谢谢

自 Python 2.6 起,enumerate() 采用可选的 start 参数来指示从何处开始枚举。参见 the documentation for enumerate

你会讨厌这个答案,因为它太明显了,但你可以这样做:

if index % 3 == 2: add a horizontal spacer

这会在第二个元素(实际上是第三个)之后添加间隔符,然后每隔三个元素添加一次。