Python元组与生成器
我很难理解为什么下面的一行返回生成器和另一个元组 第二行是如何创建生成器的,为什么在第三行是生成元组的Python元组与生成器,python,python-2.7,python-3.x,iterator,tuples,Python,Python 2.7,Python 3.x,Iterator,Tuples,我很难理解为什么下面的一行返回生成器和另一个元组 第二行是如何创建生成器的,为什么在第三行是生成元组的 sample_list = [1, 2, 3, 4] generator = (i for i in sample_list) tuple_ = (1, 2, 3, 4) print type(generator) <type 'generator'> print type(tuple_) <type 'tuple'> sample_list=[1,2,3
sample_list = [1, 2, 3, 4]
generator = (i for i in sample_list)
tuple_ = (1, 2, 3, 4)
print type(generator)
<type 'generator'>
print type(tuple_)
<type 'tuple'>
sample_list=[1,2,3,4]
生成器=(样本_列表中的i代表i)
元组(1,2,3,4)
打印类型(生成器)
打印类型(元组)
这是因为元组是不可变的对象,当我试图在
()
中解包列表时,它无法创建元组,因为它必须更改元组元组 括号用于三种不同的功能:分组、元组文本和函数调用。比较(1+2)
(整数)和(1,2)
(元组)。在生成器
赋值中,括号用于分组;在tuple
赋值中,括号是一个tuple文本。括号包含逗号且不用于函数调用时表示元组文字。您可以想象在硬编码值时创建元组,而在提供创建对象方法的地方创建生成器
这是因为(1,2,3,4)
不可能是发电机。这里没有要生成的内容,您只是指定了所有元素,而不是获取它们的规则
为了使生成器
成为元组,表达式(示例列表中的i代表i)
必须是元组。没有办法实现元组理解,因为理解需要可变的数据类型
因此,应该是元组理解的语法已经被生成器重用 我在
(1+2)
下是int,而(1,2)
下是函数调用,我不明白的是你在生成器赋值中的意思。@GaurangShah:当你赋值生成器=…
时…for…in…
是一个位于括号内的生成器。实际上有元组理解:xs=[1,2,3];ys=元组(x表示x中的x);键入(ys)
@visitor,这不是元组理解元组。