次のように自分で書くことができますsorted()
:
try:
sorted
except NameError:
def sorted(seq, key=None):
lst = list(seq) # get copy of list
if key is not None:
def my_cmp(a, b):
return cmp(key(a), key(b))
else:
my_cmp = cmp
lst.sort(my_cmp)
return lst
sorted()
組み込みの がない場合にのみ、これは new を定義しますsorted()
。まず、名前の評価を試み、sorted
取得した場合は独自の名前NameError
を定義します。map(None, seq)
の値から新しいリストを作成するための高速な方法として使用していますseq
。
または、@gnibbler で提案されているように、効率を最大化するために Schwartzian Transform を使用する場合:
try:
sorted
except NameError:
import operator as op
def sorted(seq, key=None):
if key is not None:
lst = [(key(x), x) for x in seq]
lst.sort()
return map(lambda x: x[1], lst)
else:
lst = list(seq) # get list from sequence
lst.sort()
return lst