使用List与Brackets解包,提供意外输出Python 3.5.2

时间:2017-08-24 01:45:38

标签: python-3.5

以下是我要做的事情:

l1 = (3, 4, 3)
l2 = (1, 2, 3)
print(*{x+y, for x,y in zip(l1,l2)})

输出:

4 6

我预期的输出是4 6 6

我可能会弄错,但我认为这与使用括号解包有关,因为下面的代码:

print(*list(x+y for x,y in zip(l1,l2)))

输出:

4 6 6

这就是我想要的。我想知道,如果有人能在解包时解释括号和列表之间的区别吗?

1 个答案:

答案 0 :(得分:0)

你在第一种情况下使用{}的是一套。集合是以下类:unordered collections of unique elements. 它没有打印出另外6个,因为集合只包含唯一元素

在第二种情况下,您创建的生成器可以包含非唯一或唯一元素,因此会为您提供添加到其中的所有元素。

如有疑问,请使用type()函数,即type(< thing you don't understand goes here >)来查找您正在处理的内容。