--/--/--

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

2007/11/10

リスト内包表記ってスバラシイ

久しぶりの python でクイックソート。

#!/usr/bin/env python
#coding:utf-8

def quicksort(xs):
    if len(xs) <= 1:
        return xs
    #x未満の要素をxsから抽出
    lt = lambda x, xs: [y for y in xs if y < x]
    #x以上の要素をxsから抽出
    gteq = lambda x, xs: [y for y in xs if y >= x]
    head = xs[0]
    tail = xs[1:]
    return quicksort(lt(head, tail)) + [head] + quicksort(gteq(head, tail))

if __name__ == '__main__':
    print quicksort([3, 2, 1, 47, 7, 8, 2, 0])

よくある Haskell のクイックソートのサンプル眺めててこれ python でも似たようなことできるじゃんって気づいた。逆に今まで気づかなかった。

  • lt と gteq がひどかったからシグネチャを修正。
スポンサーサイト

comment

post




上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。