2017年7月20日木曜日

開発環境

こんな感じのがあれば嬉しいのかなぁと思ってとりあえずコード書いてみた。

コード(Emacs)

Python 3

#!/usr/bin/env python3
# -*- coding: utf-8 -*-


class klist:

    def __init__(self, items):
        self.items = list(items)

    def map(self, f):
        return klist(__builtins__.map(f, self.items))

    def sorted(self):
        return klist(__builtins__.sorted(self.items))

    def __str__(self):
        return str(self.items)


class Movie:

    def __init__(self, id):
        self.id = id

if __name__ == '__main__':
    movies = klist([Movie(5), Movie(1), Movie(4), Movie(2), Movie(3)])
    ids = movies.map(lambda m: m.id).sorted()
    print(ids)

入出力結果(Terminal, IPython)

$ ./sample.py
[1, 2, 3, 4, 5]
$

ただPython では、あまり深い入れ子(ネスト)は読みにくくなりよく無いって考え方に当てはめると、現状では以下のような書き方がいいとされてるのかも。

Python 3

#!/usr/bin/env python3
# -*- coding: utf-8 -*-


class Movie:

    def __init__(self, id):
        self.id = id

if __name__ == '__main__':
    movies = [Movie(5), Movie(1), Movie(4), Movie(2), Movie(3)]
    ids = list(map(lambda m: m.id, movies))
    sorted_ids = sorted(ids)
    print(ids)
    print(sorted_ids)

入出力結果(Terminal, IPython)

$ ./sample.py
[5, 1, 4, 2, 3]
[1, 2, 3, 4, 5]
$

0 コメント:

コメントを投稿