Pythonのメモページ
インストール
Pythonは基本的にはMacには最初から入っているので、問題ない。pythonの拡張ツールを入れたい場合は、pipを入れておくと便利。
pipのインストール
以下のコマンドを打てば終わり。
適宜(各自の責任で)sudoすること。
virtualenvのインストール
具体的な話を知りたい場合は、
このあたりを参照せよ。
$pip install virtualenv
$pip install virtualenvwrapper
でおわり。各種環境は上記のリンクをチェック。
ipythonのインストール
$ pip install ipython[all]
と簡単。
ipython notebookのインストール
ipython notebookでメモを取れる。
$pip install "ipython[notebook]"
使い方は
$python notebook
とすればよい。
インタラクティブシェルを使う
対話型シェル (インタラクティブシェル) を使用するときは、
python
と打ち込む。すると、インタラクティブシェルが起動する。ここから出るには、Ctrl + Dとすればよい。
シークエンスの操作
Pythonでシークエンスとは、文字通り、オブジェクトを一定の順番に並べたものを言う。文字列だったり、リストだったりがシークエスに対応する。このようなシークエンスには、もともとの要素に変更は加えられず (不変性)、新しい文字列をつくる操作が可能である。ここでは、そのような関数をいくつか紹介する。
いま、
S='motigome'
とした文字列を用意する。
文字列の長さを取得する
文字列の長さを取得したいときは
>>>len(S)
4
として、len()関数を使えば良い。
文字列の一部を取り出す
また、文字列にはインデックスが自動的に付けられ、左端から0, 1, 2, (今の場合、mは0, oは1, t は2といった具合) となる。これにより、
>>>S[0]
m
>>>S[-1]
e
とした操作が可能となる。特定の文字列を取り出したい場合は、
>>>S[1:3]
oti
とすることで、抽出が可能となる。
文字列の置換
文字列の特定の部分を置換したいときがあるとしよう。たとえば、"motigome"を"mochigome"に変えたいときは
>>>S.replace('ti','chi')
'mochigome'
となる。
文字列の空白の扱い
文字列の前後に空白があって、それを取り除きたいときは、
>>>S.strip()
とする。文字列の後ろ部分の空白のみを取り除きたいときは、
>>>S.rstrip()
とする。
シークエンスで使用可能な関数を取り出す
文字列に対して使用可能な関数(メソッドという)を見たいときは、dir関数を使えば良い
>>>dir(S)
['__add__', '__class__', '__contains__', '__delattr__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__getslice__', '__gt__', '__hash__', '__init__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '_formatter_field_name_split', '_formatter_parser', 'capitalize', 'center', 'count', 'decode', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'index', 'isalnum', 'isalpha', 'isdigit', 'islower', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'partition', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']
となる。そのうち、S.upperの使い方を知りたければ、
>>> help(S.upper)
Help on built-in function upper:
upper(...)
S.upper() -> string
Return a copy of the string S converted to uppercase.
というのが返ってきて、「あぁたぶん文字列を大文字にするっぽいな」といったことを調べることができる。
実際使ってみると、
>>> S.upper()
'MOTIGOME'
となった。ちなみに、upper()のカッコを付け忘れると、
>>> S.upper
<built-in method upper of str object at ...>
などと怒られるので注意。
リストに固有のメソッド
リストは、オブジェクトを特定の順番に並べたもの。配列に似ている。けど、サイズは自由に変えることができる。
たとえば、
L=[1,'motigome', 3.5]
を使うとして、以下の議論は進んでいく。
リストの要素を増やす
リストの末尾に要素を増やしたい場合、append()を使う。
>>> L.append(3)
>>> L
[1, 'motigome', 3.5, 3]
リストの特定の要素を切り取る
リスト内の特定の要素を除きたいときはpop関数を使う
>>> L.pop(3)
3
>>> L
[1, 'motigome', 3.5]
要素の数を数えたい
特定のリストの要素数を数えたいときは、lenを使う。たとえばいま、
a=[1,2,3,4]
とうリストがあるとき、
print len(a)
とすれば、
4
と返事が返ってくる。しかし、リストの中にリストがある場合、たとえば
a[ [1,2],[3,4],[5,6,7,8] ]
などとした場合は、最も長いリストの要素数を返す。
この場合
print len(a)
4
となる。
要素の最大値・最小値を求めたい
Pythonにはmin, max関数というものがあり、リストや配列の最大値・最小値をピックアップすることが簡単にできる。
hoge = [2,4,6,8]
print max(hoge)
8
print min(hoge)
2
様々な関数
計算をするときには、四則演算だけでなく、logや指数、三角関数などを使いたいときがある。そのようなときは、mathパッケージというものがあり、
from math import *
などとしておくと使うことができる。
a=2.7
log(a)
0.9932517730102834
という感じ。しかし、これらmathでimportした関数は配列などには利用できないため、配列を引数としてこれらの関数を使いたい場合は、numpyから持ってくる。
a=[2,3,4]
log(a)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: a float is required
np.log(a)
array([ 0.69314718, 1.09861229, 1.38629436])
ファイル操作
標準入力からファイル名を取ってきて、そのファイルの中身を読みたいときは、sysモジュールを使う。
import sys
for line in sys.stadin:
print line.split('|')
といった感じ。
型判定
各変数の型が何かをちょと見たいときは
type(hoge)
とやればよい。
リストをすべて文字列に直す
python内でリストとして扱っていたものを、最後に文字列として変換したい場合は、map関数とstr関数を使う。
mapは
map(function, a)
という形で使えて、aに対して、functionをfunction(a)を行ったものを返していきます。なので、aがリストの場合、
map(str, a)
ですべて文字列に変換が可能で、それを一つの文字列に直したくて、かつdelimitorは"|"のときは、
'|'.join(map(str, a))
などとかけば良い。
数値計算
Pythonを使って積分をしたいときは、 "scipy.integrate"から"quad"をimportする。
from scipy.integrate import quad
"quad"の使い方は、関数f(x)をa->bまで積分したいときは
y, abserr = quad(f, a, b)
とすればよい。"y"には積分値が、abserrには誤差の絶対値が入る。
numpyでデータを読み込む
numpyでデータを読み込むときは、
import numpy as np
data = genfromtxt('hoge.txt', delimiter='|', skiprows=2, dtype=str, autostrip='True')
などとして、とりあえずは文字列として読み込んで、そのあと各自のフォーマットに直せば良い。
文字列の置換
文字列の置換はreplace('mae','ato')でもできるが、正規表現などを使いたいときはre moduleを使う。
import re
hoge = 'I like python'
re.sub('python', 'perl', hoge)
これで
I like perl
と出力される。
ウェブブラウザの起動
pythonでウェブブラウザを起動するときは、webbrowserをimportする
最終更新:2015年04月16日 10:31