给出不同顺序的Python列表

给出不同顺序的Python列表,python,Python,为什么下面的顺序不同 编辑: 另外,正确的解决方案是什么,即删除重复项并保持顺序 def rt(s): s = list(s) print s print set(s) print rt('abc') 输出 ['a', 'b', 'c'] set(['a', 'c', 'b']) None 因为集合不是有序结构。在内部,集合使用哈希表,哈希函数不受限制地保持其参数的顺序。您可以使用,这符合您的目的 如果要保留顺序的集合,可以在此处查找各种解决方案: 如果要消除重复项并对其进行

为什么下面的顺序不同

编辑:

另外,正确的解决方案是什么,即删除重复项并保持顺序

def rt(s):
  s = list(s)
  print s
  print set(s)

print rt('abc')
输出

['a', 'b', 'c']
set(['a', 'c', 'b'])
None
因为集合不是有序结构。在内部,集合使用哈希表,哈希函数不受限制地保持其参数的顺序。

您可以使用,这符合您的目的


如果要保留顺序的集合,可以在此处查找各种解决方案:

如果要消除重复项并对其进行排序,可以使用:

s = sorted(set(s))
从最内在的呼唤:

设置-删除重复项

排序-按升序排序

另外,您缺少一个return语句,因此最后一次打印是None

用法:

>>> ''.join(unique('aaabbddeffg'))
'abdefg'

请参阅,以获得更高效的版本,称为unique_Eversee。

集合没有任何顺序感。您正在寻找哪种解决方案?您想拥有一个有序的集合吗?可能重复@Rajeev解决方案需要一个问题。有什么问题?编辑后,问题就不清楚了。@Rajeev输入列表总是排序的吗?对列表的两个调用完全没有必要。顺便说一句,OP似乎想保持顺序,而不是对元素排序。谢谢注意。编辑以防OP觉得有用。最正确的答案也是最被否决的:同意。但是如果函数返回了一些东西,它会更有用。@juanchopanza我写的函数和用户问这个问题的函数是一样的,只是为了撤销这个类比
def unique(sequence):
    seen = set()
    for e in sequence:
        if e not in seen:
            seen.add(e)
            yield e
>>> ''.join(unique('aaabbddeffg'))
'abdefg'