可以列出成为python中set的元素

时间:2017-05-05 18:59:26

标签: python-2.7 set

我真的很想知道为什么第二个会出错: 如果有人可以突出显示我们可以使用列表作为集合中的元素,或者不允许在集合中包含任何可变对象,那将是非常好的。 1)

>>> x = set(["Perl", "Python", "Java"])
>>> x
set(['Python', 'Java', 'Perl'])
>>> 

2)

>>> cities = set((["Python","Perl"], ["Paris", "Berlin", "London"]))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'list'
>>> 

1 个答案:

答案 0 :(得分:1)

正如您所指出的,您list的成员不能set(因为它不可播放)。

我认为你在第一个例子中被repr的设置弄糊涂了。输出set(['Python', 'Java', 'Perl'])并不表示该集合包含3个元素的列表。相反,它包含三个字符串,列表只是repr使用的符号的一部分(因为集合构造函数需要一个可迭代的项)。请注意,项目的顺序会从您的输入更改为输出的任意顺序!

在Python 3中,集合类型repr使用set-literal语法:

>>> x = set(["Perl", "Python", "Java"])
>>> x
{'Java', 'Perl', 'Python'}