![](/img/trans.png)
[英]Same function is giving different results in opposite order in Python. Why?
[英]Python list giving different order
为什么下面的顺序不同。
编辑:
正确的解决方案是什么,即删除重复项并保留订单
def rt(s):
s = list(s)
print s
print set(s)
print rt('abc')
输出量
['a', 'b', 'c']
set(['a', 'c', 'b'])
None
因为set
不是有序结构。 在内部, set
使用哈希表,并且对哈希函数保持其参数的顺序没有限制。
您可以使用OrderedSet ,它可以满足您的目的。
pip install orderedset
from orderedset import OrderedSet
def rt(s):
s = list(s)
print s
print OrderedSet(s)
print rt('abc')
def unique(sequence):
seen = set()
for e in sequence:
if e not in seen:
seen.add(e)
yield e
用法:
>>> ''.join(unique('aaabbddeffg'))
'abdefg'
请参阅itertools
食谱以获取效率更高的版本,称为unique_everseen
。
如果要使用保留顺序的集合,可以在此处查找各种解决方案: 为什么Python的标准库中没有按插入顺序对容器进行排序?
如果要消除重复项并对其进行排序,可以使用:
s = sorted(set(s))
从大多数内部调用:
set
-删除重复项
sorted
-按升序排序。
此外,您缺少return语句,因此最后打印为None
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.