LoginSignup
5
4

More than 3 years have passed since last update.

Python and numpy tips

Last updated at Posted at 2016-07-02

Python関連のtipsを,一つ一つ記事にするのは細かすぎるので,ここにまとめておく.

Algorithm

Unique

あるシーケンスについて,ユニークな要素のみを持つシーケンスを作る.
下記コードはStack OverFlowより:

def uniquify(seq):
    seen = set()
    seen_add = seen.add
    return [x for x in seq if x not in seen and not seen_add(x)]

[Wandbox]三へ( へ՞ਊ ՞)へ ハッハッ

これはおもしろい.束縛されたメソッドだけ触ることができるんだな.

参考情報

Split

あるシーケンスから,長さnずつに区切ったシーケンスを作る.
下記コードはココを参考に:

l = 10
n = 4

zip(*[iter(range(l))]*n)

import itertools
itertools.izip_longest(*[iter(range(l))]*n)

import more_itertools
more_itertools.chunked(range(l), n)

[Wandbox]三へ( へ՞ਊ ՞)へ ハッハッ

参考情報

Once

ある関数を何度も呼び出したとしても,最初の一回のみその処理を行う.

def run_once(f):
    def wrapper(*args, **kwargs):
        if not wrapper.has_run:
            wrapper.has_run = True
            return f(*args, **kwargs)
    wrapper.has_run = False
    return wrapper

@run_once
def greeting():
    print('Hello.')

greeting()
greeting()
greeting()

[Wandbox]三へ( へ՞ਊ ՞)へ ハッハッ

並列呼び出しの場合は排他的処理が必要になるだろう.上のコードはこれを考慮していない.
そのため,このコードはバッドノウハウとなっている気がする.

TODO: 要改善

参考情報

Reversed numpy.cumsum

5
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
4