Discuss / Python / 交作业

交作业

Topic source

小喵biubiu

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

dict1 = {'(1,2,3)': 100} type(dict1)

<class 'dict'> dict1 {'(1,2,3)': 100}

dict2 = {'(1,[2,3])':100} type(dict2)

<class 'dict'> dict2 {'(1,[2,3])': 100}

set1 = set([8,9,(1,2,3),5,6]) type(set1)

<class 'set'> set1 {5, 6, 8, 9, (1, 2, 3)}

set2 = set([8,9,(1,[2,3]),5,6]) Traceback (most recent call last): File "<pyshell#16>", line 1, in <module> set2 = set([8,9,(1,[2,3]),5,6]) TypeError: unhashable type: 'list'

小喵biubiu

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

dict1,dict2 都不报错是因为 '(1,2,3)' 和'(1,[2,3])',类型是str,而str是不变对象

set的两种其他有解释,不在多说。

在dict中, '(1,2,3)' 和'(1,[2,3])'已经str化,都是字符串,所以是固定不变的。tuple (1,2,3) 和(1,[2,3]),是2种不同tuple,第一种已经是固定的,第二种是含有list,不是固定的。在set中,tuple (1,2,3)是可行的,但tuple(1,[2,3])是不可行的??

小喵biubiu

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

撇开格式来说,tuple的不变指的是指向不变,例如tuple(1,[2,3]),t0指向1,t1指向[2,3],就算2,3随意变,t1永远指向他,这个不变,元素可变。


  • 1

Reply