课后习题
请使用集合删除列表中重复的元素,并将其转换为元组在命令行进行输出。
list1 = [ 'r', 'g', 'b', 'g', 'b', 'r', 'g' ]
课程代码、课件及其他相关资料地址
https://gitee.com/wilsonyin/zero-basics-python
作者回复: 这是因为sorted()函数的设计就是返回一个列表。 具体来说: list1 = {x for x in ['r', 'g', 'b', 'g', 'b', 'r', 'g']} 这一行创建了一个集合set对象list1,包含了不重复的字符'r'、'g'、'b'。 colur = set(list1) 这一行其实是多余的,因为list1本身就是一个集合了,可以直接使用list1。 print(colur, type(colur)) 这里输出了colur集合的内容,以及它的类型,which是<class 'set'>。 print(sorted(colur), type(sorted(colur))) sorted(colur)调用了sorted()内置函数,它会返回一个包含所有元素的新列表,列表元素按升序排列。 因此,sorted(colur)的结果是一个列表,如['b', 'g', 'r']。 type(sorted(colur))输出这个新列表的类型,显然就是<class 'list'>。 所以,虽然colur本身是一个集合,但是sorted()函数会返回一个排序后的列表。
作者回复: 需要完整代码,只靠一句错误是无法定位问题的,同样在搜索引擎中也没办法搜到正确的结果
作者回复: 问题背景?信息太少不止我没办法回答,你在网上也搜不到正确的答案
作者回复: 这里的无序,我觉得你的理解不太到位,我解释一下。 无序并不是指每次转换的结果不同,而是在不同的计算机上“可能”有不同的类型转换结果。对于程序员来说,不确定性是个很可怕的敌人,一旦你对排好顺序的数据类型,转换成无序的数据类型时, 再转换回来要再做排序。 所以这里的可能性是使用set需要注意的一个知识点