Python 是否有返回序列当前项的方法?

Python 是否有返回序列当前项的方法?,python,iterator,cycle,itertools,Python,Iterator,Cycle,Itertools,我有一个类对象列表,我正在使用itertools.cycle()不断循环它 class Letter: def __init__(self,name): self.name = name self.att = 0 self.att1 = 0 现在我创建类对象列表 letterList = [Letter('a'),Letter('b'),Letter('c'),Letter('d')] 然后我用itertools.cycle()创建一个序列,

我有一个类对象列表,我正在使用
itertools.cycle()
不断循环它

class Letter:
    def __init__(self,name):
       self.name = name
       self.att = 0
       self.att1 = 0
现在我创建类对象列表

letterList = [Letter('a'),Letter('b'),Letter('c'),Letter('d')]
然后我用
itertools.cycle()
创建一个序列,如下所示:

seqList = itertools.cycle(letterList)
每当我想转到序列中的下一项并为其中一项属性指定值时:

next(seqList).att = 1
但是如果我想给另一个属性赋值呢?是否有其他迭代器方法允许我调用序列中的当前项,如:

thisItem(seqList).att1 = 7
可以将next()赋值给变量并访问该变量

this_one = next(seqList)
this_one.attr = value
如果您只是计划无限循环相同的项目,则可以使用for循环(不过,中断步骤对于最终退出非常有用!):


在大多数实际情况下,您只需使用一个变量,但只是为了好玩,让我们创建一个包装器来“记住”给定iterable的最后一项(或最后N项):

from collections import deque

class recorded:
    def __init__(self, it, size=1):
        self.it = it
        self.buf = deque(maxlen=size)

    def __iter__(self):
        return self

    def next(self):
        self.buf.append(next(self.it))
        return self.buf[-1]

    def last(self, n=0):
        return self.buf[-1-n]
现在你可以写:

it = recorded(itertools.cycle(letterList))

it.next()

it.last().something = 11
it.last().somethingElse = 111
甚至:

it = recorded(itertools.cycle(letterList), 2)

it.next()
it.last().something = 11

it.next()
it.last(1).something = penultimate

我找到的解决办法是:

next(seqList).att = 1
next(seqList)
next(seqList)
next(seqList)
next(seqList).att1 = 7

它既不美观也不优雅,对于较大的场景来说效果也不太好,但它适用于这种情况,而且非常简单。

这看起来有点滑稽。您可以提供更多的上下文吗?您可以只保存值:
item=next(seqList);第1项=1;第2项=2next(seqList)。\uuu dict\uuuu.update({'attr1':'value1','attr2':'value2'})
我认为这不会起作用,因为它会创建另一个实例,并且它在方法的范围内。我需要在整个周期中使用相同的实例。
next(seqList).att = 1
next(seqList)
next(seqList)
next(seqList)
next(seqList).att1 = 7