Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python——如何强制枚举从1开始——或解决方法?_Python_For Loop_Enumeration_Modulus - Fatal编程技术网

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

Python——如何强制枚举从1开始——或解决方法?,python,for-loop,enumeration,modulus,Python,For Loop,Enumeration,Modulus,我有一个简单的for循环: for index, (key, value) in enumerate(self.addArgs["khzObj"].nodes.items()): 我想在每第三项之后启动一个新的wx水平boxsizer,以创建一个面板,每个面板有3个节点,并且在节点中的数量相同。显而易见的解决办法是: if index % 3 == 0: add a horizontal spacer 但是枚举从0开始,因此0%3==0,它将立即开始一个新行。我试过做: if index =

我有一个简单的for循环:

for index, (key, value) in enumerate(self.addArgs["khzObj"].nodes.items()):
我想在每第三项之后启动一个新的wx水平boxsizer,以创建一个面板,每个面板有3个节点,并且在节点中的数量相同。显而易见的解决办法是:

if index % 3 == 0: add a horizontal spacer
但是枚举从0开始,因此0%3==0,它将立即开始一个新行。我试过做:

if index == 0: index = index + 1
但这当然不起作用,因为它创建了一个新的变量,而不是更改原始变量——所以我得到了1、1、2、3、4等等,但这不起作用,因为在命中索引%3==0之前,我将得到4个节点


有什么建议吗?这不是一个大的列举,通常只有大约10-15项。谢谢。

自Python 2.6以来,
enumerate()
采用可选的
start
参数来指示从何处开始枚举。看。

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

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

这将在第二个元素(实际上是第三个元素)之后添加间隔符,并在其之后每隔三个元素添加间隔符

我不知道,我猜你每天都会学到新东西。干得好。在添加之前,
itertools.izip(itertools.count(1),L)
将是实现这一点的方法。
+1
这实际上很容易知道,但op也可以使用
索引%3==2
使用enumerate仍然会循环所有元素,它只是改变了它的起始位置,我没注意到,真是太棒了。不过,我认为丹尼尔的观点是正确的,因为它更为明确,而且在其他不那么整洁的情况下也能帮助我;)他的解决方案当然很巧妙。这个文件
pydoc enumerate
比在这里提问更省力……类似的问题已经在中得到了回答