Discuss / Python / 关于可变和不可变的问题?

关于可变和不可变的问题?

Topic source

list既然是可变的,为什么set要用list作为参数输入? set里的参数不是应该都是不变的吗?

Todayzhou

#2 Created at ... [Delete] [Delete and Lock User]

set里不能用list作为参数输入的呀。 s=set(['zhou',10,[1,2,3]]) print(s) 你去试试就知道了。

但是教程中,s=set([1,2,3])这个不是将list作为参数输入吗?

楼上看下教程 代码下边有句话:

注意,传入的参数[1, 2, 3]是一个list,而显示的{1, 2, 3}只是告诉你这个set内部有1,2,3这3个元素,显示的顺序也不表示set是有序的。。

汪大骆

#5 Created at ... [Delete] [Delete and Lock User]
>>> s = set([1,2,3])
>>> s
{1, 2, 3}
>>> s(0)
Traceback (most recent call last):
  File "<pyshell#5>", line 1, in <module>
    s(0)
TypeError: 'set' object is not callable
>>> s[0]
Traceback (most recent call last):
  File "<pyshell#6>", line 1, in <module>
    s[0]
TypeError: 'set' object does not support indexing
>>> s([4,5,6])
Traceback (most recent call last):
  File "<pyshell#13>", line 1, in <module>
    s([4,5,6])
TypeError: 'set' object is not callable

补充一下,同时也增加自己的理解。 list是用来向集合s传入参数的。 s被初始化后,可以进行增删,就相当于无序无重复元素的集合。 但是不能对s中任何元素对象进行调用,也不能放入可变对象改变set原有的状态。 感觉还是学得不够深入的问题,理解能力有限请多多包涵。

曾_小果

#6 Created at ... [Delete] [Delete and Lock User]

set是把列表类型转换了,就如同int转换浮点数一样

黑版大熊

#7 Created at ... [Delete] [Delete and Lock User]

楼上一句话点明了我,这么理解起来就都通了

set是把列表类型转换了,就如同int转换浮点数一样

被这句点醒了


  • 1

Reply