こんばんわ。python永遠に初心者の僕です。 pythonはfor文が遅いから使わないようにした方がいい... 何度今まで聞いたことでしょう。 しかし調べても、あまりまとまったサイトがないようなので、自分のためにまとめてみます。 まずはリスト(配列。dataとする) からの検索です。 リストであるlistから"mokuteki"が入っている場所を探します。 1. listのindex 実は以前調べていました。 http://nahareport.blogspot.jp/2015/11/for.html data.index("mokuteki") で検索できます。 2. bisect bisectを使うにはlistがソートされている必要があるようです。 ソートはリスト標準の data.sort はマージソートで、かつ下手に自分で書くよりは早いようですのでこれを使いましょう。 でbisectの使い方はこんな感じ。 import bisect as bisect bisect.bisect_left(data, "mokuteki") では今度は、検索でなく逐次実行について。 リストから条件にあったものだけを取り出し(抽出)です。 例えば僕は、matplotlibでプロットするときに、3列目が0未満だったら赤、0以上だったら青... みたいな逐次処理での色分けをよくやります。 data2を3列のnumpy.arrayとし、3列目が0未満のものを抽出したいと思います。 これを高速にやるには以下2種があるようです。 3. filter filter(lambda x: x < 0, data2[:,2]) lambda方式を使って非常に簡単にかけますね... 4. リスト内包表記 [x for x in data2[:,2] if x < 0] forを使っているじゃないか!と思いきや普通のforの2倍速いそうです) 当たり前ですがfilterもリスト内包表記も「3列目」を見て、その行3列全てを取り出すのはできません。う〜ん... 追記 5. numpy.where 僕のやりたいことはnumpy...