2

sort()の戻り値はNoneであるため、次のコードは機能しません。

def sorted_unique_items(a):
   return list(set(a)).sort()

より良い解決策のためのアイデアはありますか?

4

4 に答える 4

6

使用sorted()

sorted(set(a))

list()呼び出しを完全に省略できます。

于 2012-10-30T10:31:35.357 に答える
1

その単純なsorted()方法を使用してください:

data = [10,5,46,4]
sorted_data = sorted(data)
print "Sorted Data ::::",sorted_data
于 2012-10-30T10:44:01.600 に答える
0

上記の解決策は、string、integer、tupleなどのハッシュ可能なタイプでのみ機能しますが、listなどのハッシュ不可能なタイプでは機能しません。

たとえば、リストがある場合data= [[2],[1],[2],[4]]

ハッシュ不可能なタイプの最良の解決策は次のとおりです。

from itertools import izip, islice

values= [[2],[1],[2],[4]]

def sort_unique_unhashable(values):

    values = sorted(values)
    if not values:
        return []
    consecutive_pairs = izip(values, islice(values, 1, len(values)))
    result = [a for (a, b) in consecutive_pairs if a != b]
    result.append(values[-1])
    return result
print sort_unique_unhashable(values)
于 2012-10-30T11:22:23.677 に答える
-1

2つのオプションがあります:

a = [2,34,55,1,22,11,22,55,1]

#First option using sorted and set. 
sorted(set(a))

#second option using list and set.
list(set(a))
于 2012-10-30T11:41:17.633 に答える