一直以为(x*x for x in range(10))和[x*x for x in range(10)]一样,只不过一个产生列表一个产生元组,但看过这篇文章发现完全不是这回事:Python迭代器和生成器详解 - 知乎 (zhihu.com)
总之(x*x for x in range(10))这种形式是生成器表达式。生成生成器的方式包括生成器函数和生成器表达式,以下是从链接文章搬来的图:

一直以为(x*x for x in range(10))和[x*x for x in range(10)]一样,只不过一个产生列表一个产生元组,但看过这篇文章发现完全不是这回事:Python迭代器和生成器详解 - 知乎 (zhihu.com)
总之(x*x for x in range(10))这种形式是生成器表达式。生成生成器的方式包括生成器函数和生成器表达式,以下是从链接文章搬来的图: