使用start参数时Python枚举内置错误
我正在修改一些代码,这些代码在通过列表理解声明的列表上调用enumerate使用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]):
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。