Pythonのメモページ


インストール

Pythonは基本的にはMacには最初から入っているので、問題ない。pythonの拡張ツールを入れたい場合は、pipを入れておくと便利。

pipのインストール


以下のコマンドを打てば終わり。

適宜(各自の責任で)sudoすること。

virtualenvのインストール

具体的な話を知りたい場合は、このあたりを参照せよ。

$pip install virtualenv
$pip install virtualenvwrapper

でおわり。各種環境は上記のリンクをチェック。

ipythonのインストール

ipython便利。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
とした後に、loadtxtを使えばよいが、それだと文字列が読み込めない。そういう時は、genfromtxtが便利。
詳細は
http://docs.scipy.org/doc/numpy/user/basics.io.genfromtxt.html
が詳しい。
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する
import webbrowser
webbrowser.open('https://www.google.com/')
最終更新:2015年04月16日 10:31