迭代构建元组集

2024-04-20 09:36:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试使用set.add(tuple)迭代地构建一组元组。问题是第一个元组没有保持封装为元组。其成员作为唯一元素输入集合。在

# What I'd like to do
s = set((1,2))
s.add((3,4))
s.add((5,6))

>>>s
>>>{1, 2, (3, 4), (5, 6)}

当然,我可以建立一个元组列表,然后将其转换为一个集合,但是我想知道是否可以避免从一个列表转换到另一个集合。在

^{pr2}$

谢谢。在


Tags: toadd元素列表成员dowhatlike
3条回答

一个参数set构造函数接受要放入集合中的一个iterable。特别是,它不接受对象,并创建包含该对象的singleton集。在

您没有得到错误,因为元组是可编辑的;set构造函数尽职尽责地将元组的每个元素添加到集合中。在

更好的方法是使用构造函数{(1,2)},而不是set(((1,2),))set([(1,2)]){...}语法被重载以允许创建set实例和dict实例。(但是不能用这种方式生成一个空集;面对歧义,python假设dict

您应该这样创建集合:

s = {(1, 2)}

否则,set()“constructor”将解压元组中的所有元素并将它们添加到新的空集中。在

在Python 2.7及更高版本上,可以使用set literal:

s = {(1, 2)}

如果您想使用set来生成一个元素为thing的集合,那么可以这样做

^{pr2}$

其中set的参数是1元素列表。如果thing是(1,2)`,那意味着你有

s = set([(1, 2)])

相关问题 更多 >