【发布时间】:2017-08-25 19:41:04
【问题描述】:
谁能向我解释为什么从排序列表中创建一个集合会导致一个未排序的集合?
list.sort() 应该对列表进行适当的排序,就像它所做的那样。 set(list) 应该返回列表的唯一值,就像它一样。
但是为什么结果集没有排序呢?我需要做一个集合,把它变回list2,然后对list2进行排序吗?
(使用 Python 2.7.6)
代码:
def longest(s1, s2):
list = []
s = s1 + s2
for letter in s:
list.append(letter)
print list
list.sort()
print list
unique = set(list)
print unique
s4 = ""
for item in unique:
s4 = s4 + item
print s4
return s4
控制台输出:
['a', 'r', 'e', 't', 'h', 'e', 'y', 'h', 'e', 'r', 'e', 'y', 'e', 's', 't', 'h', 'e', 'y', 'a', 'r', 'e', 'h', 'e', 'r', 'e']
['a', 'a', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'h', 'h', 'h', 'h', 'r', 'r', 'r', 'r', 's', 't', 't', 'y', 'y', 'y']
set(['a', 'e', 'h', 's', 'r', 't', 'y'])
aehsrty
【问题讨论】:
-
Set 没有排序,那么为什么要实现一个返回它们排序的函数呢?如果您想要一个排序集,请使用
sorted(set(x)),如下所述:stackoverflow.com/questions/15181867/… -
集合根据定义是无序的