使用start参数时Python枚举内置错误

使用start参数时Python枚举内置错误,python,iterable,Python,Iterable,我正在修改一些代码,这些代码在通过列表理解声明的列表上调用enumerate self.groups = [Groups(self, idx) for idx in range(n_groups)] 随后: for idx, group in enumerate(self.groups): # do some stuff 但是当我通过start参数将枚举调用更改为从第二个list元素开始时,例如 for idx, group in enumerate(self.groups[1]):

我正在修改一些代码,这些代码在通过列表理解声明的列表上调用enumerate

self.groups = [Groups(self, idx) for idx in range(n_groups)]
随后:

for idx, group in enumerate(self.groups):
    # do some stuff
但是当我通过start参数将枚举调用更改为从第二个list元素开始时,例如

for idx, group in enumerate(self.groups[1]):
我得到一个例外:

exceptions.TypeError: 'Group' object is not iterable

有人能解释一下原因吗?

问题是:在序列上使用带有单个参数的索引器将从序列中生成单个对象。从序列中拾取的对象属于Group类型,该类型不可编辑

解决方案:使用从特定索引获取新的项目序列:

for idx, group in enumerate(self.groups[1:]):
    # do some stuff

问题是:在序列上使用带有单个参数的索引器将从序列中生成单个对象。从序列中拾取的对象属于Group类型,该类型不可编辑

解决方案:使用从特定索引获取新的项目序列:

for idx, group in enumerate(self.groups[1:]):
    # do some stuff
你不是从第二个开始,你只是试图在第二个迭代。要从第二项开始,请执行以下操作:

for idx, group in enumerate(self.groups[1:]):
    # process
你不是从第二个开始,你只是试图在第二个迭代。要从第二项开始,请执行以下操作:

for idx, group in enumerate(self.groups[1:]):
    # process

如果您的序列足够大,比考虑使用ItLSICS函数来自ItRealStices模块,因为它对于大的序列比切片更有效的内存:

import itertools

for idx, group in enumerate(itertools.islice(self.groups, 1, None)):
    # process

如果您的序列足够大,比考虑使用ItLSICS函数来自ItRealStices模块,因为它对于大的序列比切片更有效的内存:

import itertools

for idx, group in enumerate(itertools.islice(self.groups, 1, None)):
    # process

我误读了启动参数的文档,我应该写enumerateself.groups,1在我的原始代码中,但这并不是我实际想要的,因为这是初始计数值,不会跳过序列开头的任何iterables。我误读了start参数的文档,我应该编写enumerateself.groups,在我的原始代码中为1,但这并不是我实际想要的,因为这是初始计数值,不会跳过序列开头的任何iterables。