Hatena::Grouppython

nelnal@python

2008-02-15

[] タプルでもソートできます 20:19  タプルでもソートできます - nelnal@python を含むブックマーク はてなブックマーク -  タプルでもソートできます - nelnal@python

ちょっとした発見。

数値のみで構成されたタプルのリストをソートするのにどうしようかと考えていたのだが、

別に特別な比較関数を用意しなくても勝手に処理してくれた。

>>> x = [ ( 1, 2, 3), (2, 3, 1 ), (5, 4, 1 ), (3, 2, 1), (2, 3, 3) ]
>>> x.sort()
>>> x 
[(1, 2, 3), (2, 3, 1), (2, 3, 3), (3, 2, 1), (5, 4, 1)]
トラックバック - http://python.g.hatena.ne.jp/nelnal_programing/20080215

2008-02-13

[] ディクショナリのキーにリストを割り当てる 16:40  ディクショナリのキーにリストを割り当てる - nelnal@python を含むブックマーク はてなブックマーク -  ディクショナリのキーにリストを割り当てる - nelnal@python

参照
Python Cookbook

今までは以下の様に書いていた

d1 = {}
for key, value in datas:
    if d1.has_key( key ):
        d1[ key ].append( value )
    else:
        d1[ key ] = [ value ]

しかし、何度も同じことを書くうちに

いくらなんでもこれは簡単に書けるだろと思ったらやっぱりあった。


setdefaultってこう使うのね。

d1 = {}
for key, value in datas:
    d1.setdefault( key, [] ).append( value )

[] イテレータ 15:07  イテレータ - nelnal@python を含むブックマーク はてなブックマーク -  イテレータ - nelnal@python

イテレータの書き方ってどうして書籍*1には書いてないのかな・・・?


とりあえず良いイテレーションのコード例ではないと思うが書いておく。

class TestIter:
    def next():
        if self.index >= len( self.lst ):
            raise StopIteration
        else:
            return self.lst[ self.index ] * 3

    def __init__( self, lst ):
        assert lst

        self.lst = lst
        self.index = 0

    def __iter__( self ):
        return self

for n in TestIter( [ 1, 2, 3 ] ): print n
for m in TestIter( [ 'a', 'b', 'c' ] ): print m
参照
再帰とジェネレータ

*1:みんなのPythonPythonクイックリファレンスPythonクックブック

MinnieMinnie2011/07/28 00:01Many many qutaliy points there.

2007-11-12

[][] 演算子について 23:36  演算子について - nelnal@python を含むブックマーク はてなブックマーク -  演算子について - nelnal@python

他言語との違い*1に色々と気付いたのでメモ


インクリメント演算子・デクリメント演算子

Python ではインクリメント演算子、及びデクリメント演算子はない模様( 参考 : http://d.hatena.ne.jp/shrkw/20061025/1161885038 )。

何の躊躇も無く記述して、あっさりエラーになった。


なので、自然と以下の様に書くことに

num += 1;

num -= 1;


三項演算子

三項演算子についても気になったので調べてみる。

こちらも Python には基本的に無い( 参考 : http://omake.accense.com/wiki/PythonIntroThree? )。

C言語をある程度使える人間としては使いたいところ。


ただし、version 2.5 以降では使えるようだ。

といっても書き方が違う。

result = (条件が真の場合の値) if (条件式) else (条件が偽の場合の値)


書き方は違うし、出たばっかりの最新バージョンでの書き方だし

ってわけで、この三項演算は暫く使わないだろうなぁ・・・。

*1:自分が使ってるC言語視点での話だが

トラックバック - http://python.g.hatena.ne.jp/nelnal_programing/20071112