如果set不允许可变对象那么为什么它允许列表?

时间:2016-09-29 17:21:56

标签: python python-2.7 python-3.x set

我正在学习python,我倾向于一个tuturial,set不允许可变对象,所以我认为可变对象列表?

当我尝试这个时

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

它工作正常。

当我尝试

cities = set((("Python","Perl"), ("Paris", "Berlin", "London")))

它也有效但我试过这个

citiess = set((["Python","Perl"], ["Paris", "Berlin", "London"]))

它给出错误?那么为什么它会给出错误,如果它是一个列表,那么为什么第一个代码在运行时也会有列表?

请不要重定向问题,例如“如何构建列表项目集”

1 个答案:

答案 0 :(得分:3)

集合不允许使用可变元素 *,但在set(["Perl", "Python", "Java"])中,列表不是元素。列表的元素用作新集的元素,列表的元素是不可变的。

*具体而言,是影响==比较的方式可变的元素。