我们都知道,有列表理解,比如
[i for i in [1, 2, 3, 4]]
还有字典的理解,比如
{i:j for i, j in {1: 'a', 2: 'b'}.items()}
但
(i for i in (1, 2, 3))
将在生成器中结束,而不是tuple
理解。为什么会这样呢?
我的猜测是tuple
是不可变的,但这似乎不是答案。
发布于 2013-06-05 20:46:37
您可以使用生成器表达式:
tuple(i for i in (1, 2, 3))
但是…的括号已经用过了。生成器表达式。
发布于 2017-11-24 23:34:22
Since Python 3.5,您还可以使用splat *
解包语法来解包生成器表达式:
*(x for x in range(10)),
发布于 2013-06-05 20:47:34
理解是通过循环或迭代项目并将其分配到容器中来工作的,元组无法接收分配。
一旦创建了元组,就不能对其进行追加、扩展或赋值。修改元组的唯一方法是如果它的一个对象本身可以被分配给(是一个非元组容器)。因为Tuple只持有对这类对象的引用。
另外-一个元组有它自己的构造器tuple()
,你可以给它任何迭代器。这意味着要创建一个元组,您可以这样做:
tuple(i for i in (1,2,3))
https://stackoverflow.com/questions/16940293
复制相似问题