Hatena::ブログ(Diary)

プログラミング所感

2015-11-04

flake8のmain.pyの49行目に「sys.stderr.write('%.3f\n' % (report.total_errors / len(report.lines))」を入れて、--countつきで実行すると行あたりの数が出る。

2015-10-23

pythonのインデントは、 いくつでもいいようだ。下記も普通に実行できる。

(インデントがわかるように空白を「_」にしている)

for i in (1,):
_for j in (2,):
___for k in (3,):
_________print(i,j,k)
_for k in (4,):
_______print(i,j,k)
for i in (2,):
___print(i)

tsutomu3tsutomu3 2015/10/23 14:17 やるべきじゃないけど、ネストが20段もあったりすると、短くした方が見やすい。

2015-10-13 PyConJP2015

PyConJP2015の発表資料。

http://www.slideshare.net/SaitoTsutomu/python-pycon-2015

PyConJP2015は600人超の参加で盛況でした。来年も楽しみ。

2015-10-09

ドント方式の計算

n = 9 # 議席数
rt = [120, 90, 60] # 投票数

from __future__ import division, print_function
import heapq
r = [[-j, i, 0] for i, j in enumerate(rt)]
heapq.heapify(r)
while n > 0:
    n -= 1
    p = heapq.heappop(r)
    p[2] += 1
    p[0] *= p[2] / (p[2] + 1)
    heapq.heappush(r, p)
r = sorted(r, key=lambda x: x[1])
print([i[2] for i in r])
>>>
[4, 3, 2]

2015-10-05

2015-10-03

VS2015でPTVSのインストールが失敗していたのだが、VSの最初のインストールで選べばいいだけだった。

2015-10-02

IPythonのグラフ表示で、後ろに「;None」って書いていたけど、「;」だけでいいのか。

http://yag.xyz/blog/2015/06/21/ipython-notebook-suppress-output/

2015-10-01

変換で キャッシュすると早くなるかもしれない。

from functools import lru_cache
@lru_cache(1024)
def to_datetime(s):
    return pd.to_datetime(s)
t = [pd.datetime(np.random.randint(2015, 2016), np.random.randint(1, 13),
                 np.random.randint(1, 29)).strftime('%Y/%m/%d') for _ in range(10000)]
a = pd.DataFrame(t, columns=['dt'])
%time a.dt = a.dt.apply(pd.to_datetime)
a = pd.DataFrame(t, columns=['dt'])
%time a.dt = a.dt.apply(to_datetime)
>>>
Wall time: 792 ms
Wall time: 40 ms