鉴于此:
class DataFromBls:
"""this is a spitout of data in BLS dump"""
def __init__(self, dataSource, yearOfData, inflationAdjusted):
self.dataSource = dataSource
self.yearOfData = yearOfData
self.inflationAdjusted = inflationAdjusted
def printData(self):
for value in self.dataSource:
yield self.dataSource[value]
假设x = DataFromBls([2, 3, 5, 6, 6, 7], 2010, "yes")
然后假设把以下内容交给了口译员
^{pr2}$然后我让翻译吐出5,6,7,然后给我一个回溯ndexError:列表索引超出范围
我不明白它是怎么超出范围的或者为什么只有5到7超出范围
谢谢你
下一个元素是}超出边界(最后一个元素是
6
,而{self.dataSource[5]
)。在你是想写:
是吗?在
让我们仔细看看以下循环的每个迭代的外观:
假设
self.dataSource
是列表[2, 3, 5, 6, 6, 7]
:value
将是2
,self.dataSource[2]
将是第三个元素,或者{value
将是3
,self.dataSource[3]
将是第四个元素,或者{value
将是5
,self.dataSource[5]
将是第6个元素,或者{value
将是6
,self.dataSource[6]
导致{你的问题是你直接在列表中的元素上循环,而不是索引。您要执行以下操作之一:
^{pr2}$或者。。。在
显然,第一种方法是首选的,第二种方法只是说明了如果您需要的话,如何获得索引。在
请注意,在Python3.3及更高版本中,您只需使用
yield from self.dataSource
来获得与for value in self.dataSource: yield value
相同的行为。在相关问题 更多 >
编程相关推荐