python中迭代器的内部工作

python中迭代器的内部工作,python,Python,当我们把一个iter(obj)称为iterable(列表1)时,我有一个问题。它返回一个迭代器对象。当我们调用这个迭代器对象上的下一个方法时,它一次返回一个下一个值。我的问题是迭代器对象(iter_obj)是否包含数据(在我们运行iter方法之后)并一次输出一个值,还是在运行下一个(方法)时引用/使用iterable(list_1) 您的第二个假设(迭代器包含对列表的引用)是真的 如果您查看iter对象的属性,您将看到它正好包含两个属性: it_index:iter()返回的下一个对象的序列i

当我们把一个iter(obj)称为iterable(列表1)时,我有一个问题。它返回一个迭代器对象。当我们调用这个迭代器对象上的下一个方法时,它一次返回一个下一个值。我的问题是迭代器对象(iter_obj)是否包含数据(在我们运行iter方法之后)并一次输出一个值,还是在运行下一个(方法)时引用/使用iterable(list_1)

您的第二个假设(迭代器包含对列表的引用)是真的

如果您查看iter对象的属性,您将看到它正好包含两个属性:

  • it_index
    :iter()返回的下一个对象的序列
    it_seq
    中的索引
  • it_seq
    :应迭代的序列(在您的案例中为
    列表_1
您的第二个假设(迭代器包含对列表的引用)是正确的

如果您查看iter对象的属性,您将看到它正好包含两个属性:

  • it_index
    :iter()返回的下一个对象的序列
    it_seq
    中的索引
  • it_seq
    :应迭代的序列(在您的案例中为
    列表_1

它使用参考。但是,这并不意味着您可以在迭代列表时修改列表。列表迭代器具有对列表和列表中当前索引的引用。它没有自己的列表副本。它使用引用。但是,这并不意味着您可以在迭代列表时修改列表。列表迭代器具有对列表和列表中当前索引的引用。它没有自己的列表副本。
list_1=[1,2,3,4]

iter_obj=iter(list_1)

next(iter_obj)