Edi*_*oba 10 python tuples list iterable-unpacking
在Python中,我可以写这样的东西:
some_list = [(1, 2, 3), (3, 2, 1)]
for i, *args in some_list:
   print(args)
我将得到下一个输出:
[2, 3]
[2, 1]
当我们用作*args函数参数时,它会被解压缩到tuple.
为什么我们会list在这种情况下收到 a ?
sch*_*ggl 10
这只是一个设计决定。PEP 3132tuple中对使其成为 a进行了辩论,但因可用性原因被拒绝:
使加星标的目标成为元组而不是列表。这将与函数的 *args 一致,但会使结果的进一步处理变得更加困难。
同样,将其设置为与赋值的右侧可迭代对象相同的类型,也会被拒绝:
尝试为加星号的目标指定与源可迭代相同的类型,例如,b in a, *b = 'hello' 将被分配字符串 'ello'。这看起来不错,但不可能对所有可迭代对象都保持一致。
您的示例列在同一 PEP 的规范下。
在该辩论的邮件列表中可以找到一些推理。
在处理迭代器时,您事先不知道长度,因此获取元组的唯一方法是首先生成一个列表,然后从中创建一个元组。