在python中循环遍历属性的输出时,如何保持循环计数?



我在python中遍历一个属性。顺便说一下,这只是示例代码…不是我的工作我不想把我正在做的东西贴出来,因为它有几百行。但我认为这传达了我的观点。

@property
def tokenize(self):
    (lots of compex operations)
   return tokens

在另一个方法中,我循环遍历属性

的输出
def anther_method(self):
   count = 0
   for a in self.tokenize:
       count += 1

但问题是,如果该属性输出一个列表,让我们说…然后输出另一个列表,计数器将回到零,因此我不知道如何跟踪我的循环计数。有没有办法保持我的计数,而不用对输出做某种列表推导,因为我不想保持这个属性返回的数据类型不变。

在这方面的任何帮助将是非常感激的。

下面是循环之前的输出示例:

[<__main__.Sentence object at 0x02494D30>]
[<__main__.Sentence object at 0x02494E10>, <__main__.Character object at 0x023EE470>, <__main__.Sentence object at 0x02494D50>, <__main__.Character object at 0x023EEE90>, <__main__.Sentence object at 0x02494D90>, <__main__.Character object at 0x023F53D0>, <__main__.Character object at 0x023F53F0>, <__main__.Character object at 0x023F5410>, <__main__.Sentence object at 0x02494F10>, <__main__.Character object at 0x023F5470>, <__main__.Sentence object at 0x02494E50>, <__main__.Character object at 0x023FB230>, <__main__.Sentence object at 0x02494E30>, <__main__.Character object at 0x023FB510>, <__main__.Sentence object at 0x02494DB0>, <__main__.Character object at 0x023FB770>, <__main__.Sentence object at 0x02494D30>]
[<__main__.Sentence object at 0x02494DB0>, <__main__.Character object at 0x02401530>, <__main__.Sentence object at 0x02494D30>]
[<__main__.Sentence object at 0x02494F10>, <__main__.Character object at 0x02409850>, <__main__.Sentence object at 0x02494D30>]
[<__main__.Sentence object at 0x02494D30>]
[<__main__.Sentence object at 0x02494D30>]
[<__main__.Sentence object at 0x02494F10>, <__main__.Character object at 0x02413870>, <__main__.Sentence object at 0x02494D30>]
[<__main__.Sentence object at 0x02494D30>]
[<__main__.Sentence object at 0x02494FD0>, <__main__.Character object at 0x0241E3F0>, <__main__.Sentence object at 0x02494E90>, <__main__.Character object at 0x0241E4F0>, <__main__.Sentence object at 0x02494DB0>, <__main__.Character object at 0x0241E790>, <__main__.Character object at 0x0241E7B0>, <__main__.Character object at 0x0241E7D0>, <__main__.Character object at 0x0241E7F0>, <__main__.Character object at 0x0241E810>]
[<__main__.Sentence object at 0x02494D30>, <__main__.Character object at 0x0241EB10>, <__main__.Character object at 0x0241EB30>, <__main__.Character object at 0x0241EB50>, <__main__.Character object at 0x0241EB70>, <__main__.Sentence object at 0x02494E90>, <__main__.Character object at 0x0241EC10>, <__main__.Sentence object at 0x02494E50>, <__main__.Character object at 0x02494330>, <__main__.Character object at 0x02494350>, <__main__.Character object at 0x02494370>, <__main__.Sentence object at 0x02494D90>, <__main__.Character object at 0x02494450>, <__main__.Sentence object at 0x02494F10>, <__main__.Character object at 0x02494590>, <__main__.Sentence object at 0x02494FD0>]

你可能会看到为什么它把计数器分开了。因为每次列表改变它都会重置计数器。

似乎您需要为另一个级别构建代码。如果您试图解析段落,而段落包含句子,句子包含单词,那么您需要为段落添加一个封闭方法。然后每个段落开始从0开始计算句子。在不了解some_method()的情况下,很难更具体。

最新更新