为什么? set()
函数不删除T
列表中的重复项。 这两个变量的编写方式类似,唯一的区别是列表。
t= [1,1,1,2,2,23,4,4,4,5,6,6,7]
list(set(t))
print(t)
s = [1, 2, 3, 1, 2, 5, 6, 7, 8]
list(set(s))
print(s)
产出
[1, 1, 1, 2, 2, 23, 4, 4, 4, 5, 6, 6, 7]
[1, 2, 3, 1, 2, 5, 6, 7, 8]
调用set()
和list()
不会覆盖传递到括号中的内容。 如果运行print(list(set(t)))
,您将看到您的结果。 要覆盖原始列表,请执行以下操作:
t = list(set(t))
s
保持不变。 您需要更新S
,这意味着您必须将值赋回S
,如下所示:
s = list(set(s))
有一些方法会改变对象本身。 我认为您是在想,当您做set(s)
时,它应该修改s
,实际情况并非如此。
如果您看到set()
的返回类型,则它是一个set
,因此,您必须自己将该值赋回。
必须将计算保存到一个新变量中:
t = [1, 1, 1, 2, 2, 23, 4, 4, 4, 5, 6, 6, 7]
new_t = list(set(t))
print(t)
print(new_t)
给予:
[1, 1, 1, 2, 2, 23, 4, 4, 4, 5, 6, 6, 7]
[1, 2, 4, 5, 6, 7, 23]