Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 我对迭代器和生成器类的理解-如果我错了,请纠正我_Python_Python 3.x_Python 2.7 - Fatal编程技术网

Python 我对迭代器和生成器类的理解-如果我错了,请纠正我

Python 我对迭代器和生成器类的理解-如果我错了,请纠正我,python,python-3.x,python-2.7,Python,Python 3.x,Python 2.7,我最近发表了一篇文章,在你们中一些人的帮助下,以及我的阅读,我了解到: 从我最初发布的问题来看,我的问题是——对于b中的项有什么意义。虽然我知道我在某些方面是如何工作的,但我不明白为什么我们在把项目(见下面的代码)放在b.volume而不是b中时使用b。如果我们从不在b中放东西(而是放在b.volume中),python怎么知道b中有什么呢 因此,我认为应该是b卷中i的,而不是b卷中i的 以下是我认为正确的: 我认为,当我们为b中的I调用时,它为对象b调用\uuuuuuuuuuuuuuuuuuu

我最近发表了一篇文章,在你们中一些人的帮助下,以及我的阅读,我了解到:

从我最初发布的问题来看,我的问题是——
对于b
中的项有什么意义。虽然我知道我在某些方面是如何工作的,但我不明白为什么我们在把项目(见下面的代码)放在
b.volume
而不是
b
中时使用
b
。如果我们从不在
b
中放东西(而是放在
b.volume
中),python怎么知道
b
中有什么呢

因此,我认为应该是b卷中i的
,而不是b卷中i的

以下是我认为正确的:

  • 我认为,当我们为b中的I调用
    时,它为
    对象b
    调用
    \uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu>方法。它告诉你去
    \uuuuuuuuuuuuu
    \uuuuuuuuuuu下一个
    \uuuuuuuuuu

    因此,在b
    中i的
    之后,调用对象
    b
    方法,然后调用
    下一个方法。
    \uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu

    此外,Python不知道它将执行多少次迭代,因为在范围(5)
    中没有为
    i的
    eq
    生成一个迭代了[0,1,2,3,4]到b的列表

    直到提出停止迭代为止

  • 在b.volume
  • 中为
    i做事是可行的,但这样做会破坏
    的目的


    这是正确的吗

    您认为代码中的所有内容都是正确的,但也只是告诉您,这对
    b.volume
    也有效,因此:

    for i in b.volume:
        print('The {} weighs {} kg'.format(i.name.lower(), i.weight))
    
    还提供:

    The cat weighs 5 kg
    The nintendo switch weighs 1 kg
    The potatoes weighs 2 kg
    

    注意:(如我的示例所示),
    项目
    在本例中(在最后一个循环中)应该是
    i

    @lynxx乐于帮助,:-),向上投票谢谢:)另外,是的
    b.volume
    可以工作,但这会破坏迭代器的用途(使用b.volume,迭代器不是必需的),不是吗?@lynxx是的,那么就不需要
    \uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu。
    
    The cat weighs 5 kg
    The nintendo switch weighs 1 kg
    The potatoes weighs 2 kg