Discuss / Python / 作业,评论区什么鬼。

作业,评论区什么鬼。

Topic source

list 的格式 a=['a','b','c'] tuple 的格式 a=('a','b','c') dict 的格式 a={a:b}--b可以省略 a不能为list set 的格式 a=set((a))--a不能为list a=(1,2,3) b=(1, [2, 3]) c={a} {(1, 2, 3)} 这里(1,2,3)应该是一个整体的key值

d={b} Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: unhashable type: 'list' dict 的key必须为不可变对象。而 b中的[2,3]可变所以报错。

e={a:b} {(1, 2, 3): (1, [2, 3])} e[a] (1, [2, 3]) dict 的key必须为不可变对象。这里将key变成了不可变对象。value是否可变无影响。 b[1][0]=3 e {(1, 2, 3): (1, [3, 3])}

f=set(a) {1, 2, 3} 这里1,2,3表示有这三个元素,即使是显示结果排序了,也不表示set是有序的。

g=set(b) Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: unhashable type: 'list' set 的key必须为不可变对象。而 b中的[2,3]可变所以报错。

義生守候

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

set 的格式 a=set((a))--a不能为list 这里a可以是list,文中已说明

義生守候

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

不好意思,我看错了,你是对的。哈哈

>>> s = set([1,2,3])
>>> s
{1, 2, 3}
>>> s = set((1,2,3))
>>> s
{1, 2, 3}
>>> s = set((1,2,3,[3,5,4]))
Traceback (most recent call last):
  File "<pyshell#49>", line 1, in <module>
    s = set((1,2,3,[3,5,4]))
TypeError: unhashable type: 'list'

+1(๑•̀ㅂ•́)و✧

emilyhyj

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

set 的格式 a=set((a))--a不能为list
请问这句我还是没理解到。

a =set(([1,2])) a {1, 2} 如上例子 是可以喂list 的呢

spring轩月

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

@emilyhyj

a = set(([1, 2])) 我认为这个里面是看成只有一个list元素的元祖。 但是解释器把 () 当做简单的数学符号 这样等同于 a = set([1, 2]) 所以我猜你是要这样验证 a = set(([1, 2],))

雾是成风

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

a=set(([1,2])) a {1, 2} b=([1,2]) b [1, 2] c=set(b) c {1, 2} a=set(([1,2],)) Traceback (most recent call last): File "<pyshell#62>", line 1, in <module> a=set(([1,2],)) TypeError: unhashable type: 'list' 个人感觉楼上是对的,这样的结果只能说明([1,2])和[1,2]是一样的,Python把()当成数学中的括号了,所以仍然是个列表(这个列表是集合用来输入的,上面也有说明),但是加了逗号之后就是个元组啦,而且这个元组的元素只有一个列表,比如([1,2],),这和上面只有一个元素的元组的定义是一样的,不知这样解释行不

赞一个!

shanafang9

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

1楼说set((a))中a不能为list,与教学里“要创建一个set,需要提供一个list作为集合”这句不是互相矛盾? s2 = set(([2,3])) print(s2) 直接用list是可以输出的,而2楼的错误提示“unhashable type: 'list'”按照其他博客的解释是哈希错误,并不能说set创建不能用list


  • 1
  • 2

Reply