Python 2.7.3为什么具有重复元素的元组集以这种方式运行?

时间:2015-03-21 18:21:31

标签: python set tuples

为什么我尝试在python中创建一组元组,例如

>>> print set((0,1))
set([0, 1])
>>> print set((0,0))
set([0])
>>> print set([(0,0)])
set([(0, 0)])

重复元素的元组会崩溃成非元组吗?为什么放置括号会产生所需的结果?

2 个答案:

答案 0 :(得分:1)

set构造函数采用 iterable ,它提供了集合的元素。如果为set构造函数提供类似(0, 1)的元组,则该元组的元素将成为集合的元素,即;在第一种情况下,元素将为0和1;在第二种情况下,只有元素:0。

在第三种情况下,您将为构造函数提供一个列表,其单个元素是元组(0, 0);结果集将具有与列表相同的元素(即元组(0, 0))。

如果您发现众多括号令人困惑,可以使用{ }作为集合文字Python 2. 7 和Python 3.x:

>>> {(0,0)}
set([(0, 0)])

Python 2中repr的{​​{1}}增加了一些混乱 - 在Python 3中,案例之间的区别更清晰:

set

答案 1 :(得分:0)

您正在传递嵌套的iterable并且set函数接受单个iterable:

print set([(0,0)]) # there is no other occurance of (0, 0) in list