存储元组的集合的行为,Python
我想创建一组元组,但遇到了一些我不理解的行为。例如:存储元组的集合的行为,Python,python,set,tuples,Python,Set,Tuples,我想创建一组元组,但遇到了一些我不理解的行为。例如: >>> b=set() >>> b.add((1,2)) >>> b.add((4,5)) >>> b {(1, 2), (4, 5)} # all fine >>> f = set((1,2,3)) >>> f {1, 2, 3} # ? >
>>> b=set()
>>> b.add((1,2))
>>> b.add((4,5))
>>> b
{(1, 2), (4, 5)}
# all fine
>>> f = set((1,2,3))
>>> f
{1, 2, 3}
# ?
>>> b=set().add((1,2))
>>> b
# b is empty?
有人能帮我理解这种行为吗?我的理解是元组是可散列的,所以我应该能够将它们存储在一个集合中。我正在使用Python 3。集合((1,2,3))
表示一组(1,2,3)
的元素。唯一元素为(1,2,3)
的集合是{(1,2,3)}
,而不是集合((1,2,3))
set.add
在适当的位置修改集合。如果要添加到集合中,则需要存储集合本身,然后向集合中添加,而不是存储集合的返回值。set((1,2,3))
表示一组(1,2,3)
元素。唯一元素为(1,2,3)
的集合是{(1,2,3)}
,而不是集合((1,2,3))
set.add
在适当的位置修改集合。如果要添加到集合中,则需要存储集合本身,然后向集合中添加,而不是存储集合的返回值。您混淆了不同的东西
获取一个iterable并从内容中创建一个集合 如果要创建具有单个元组的集合,请传入具有该单个元组的iterable:set()
最好使用>>> set([(1, 2, 3)]) {(1, 2, 3)}
设置文字语法:{…}
>>> {(1, 2, 3)} {(1, 2, 3)}
更新就地设置并返回set().add()
如果要创建一个空集并将其添加到其中,请使用两个单独的表达式:None
>>> b = set() >>> b.add((1, 2)) >>> b {(1, 2)}
这两个问题都与元组是可散列的无关。您混淆了不同的东西
获取一个iterable并从内容中创建一个集合 如果要创建具有单个元组的集合,请传入具有该单个元组的iterable:set()
最好使用>>> set([(1, 2, 3)]) {(1, 2, 3)}
设置文字语法:{…}
>>> {(1, 2, 3)} {(1, 2, 3)}
更新就地设置并返回set().add()
如果要创建一个空集并将其添加到其中,请使用两个单独的表达式:None
>>> b = set() >>> b.add((1, 2)) >>> b {(1, 2)}
set().add()
返回None
set().add()
返回None
。