2017-09-13 58 views
-3
a = [3.2,1,3,1,4,1,3423] 
s = sorted(set([aa for aa in a])) 
print(type(s)) 
output - class 'list' 

有人可以解释这一点!为什么它显示'list'而不是'set'。当我运行程序时没有排序的方法,它显示了class'set。为什么它会在python 3中使用set函数时显示类型'list'?

+1

因为'sorted'创建一个**列表**,它被排序。一组顺序没有顺序... –

+2

'sorted'从你给它的集合中创建一个列表。你可以[阅读它的文档](https://docs.python.org/3/library/functions.html#sorted)来看看这个。 –

+0

进入的好习惯是检查官方文档。 https://docs.python.org/3.6/library/functions.html#sorted – pvg

回答

0

sorted(..)是构造列表的函数。它没有考虑到“源”的类型,它需要一个可迭代的输入并构造一个包含该输入的列表。或者如documented

返回在迭代中有关项目的新的排序列表

由于sorted(..)由Python本身来实现,并且不采取类本身的一些协议的优势,它甚至是不可能构建一个排序为每一个集合类型集合类型。

此外,set S IN的Python是unodered:如果您构建一套具有的元素,则无法保证该订单将是一样的插入顺序,也不是说当你更新的顺序将是相同的集合。

相关问题