FrontPage  Index  Search  Changes  RSS  Login

[python]組み込み関数

文字(str, unicode)のスーパークラス

抽象型basestringはstrおよびunicodeのスーパークラス。

>>> isinstance('a', str)
True
>>> isinstance('a', unicode)
False
>>> isinstance(u'a', str)
False
>>> isinstance(u'a', unicode)
True
>>> isinstance('a', basestring)
True
>>> isinstance(u'a', basestring)
True
>>> isinstance('a', (str, unicode))
True
>>> isinstance(u'a', (str, unicode))
True

呼び出し可否判定

あるオブジェクト(object)が呼び出し可能であるか判定する(真偽値を返す)。

  • クラスは呼び出し可能(インスタンスを返す)
  • __call__()メソッドを持つ場合は呼び出し可能
bool callable(object)
>>> callable(int)
True
>>> callable(1)
False
>>> callable(abs)
True

比較

2つのオブジェクトを比較して、結果に従った整数を返す。

int cmp(x, y)
>>> cmp(1, 2)
-1
>>> cmp(1, 1)
0
>>> cmp(2, 1)
1

列挙型

iterableなオブジェクトから列挙オブジェクトを生成する。

enumerate_object enumerate(iterable)
>>> for e in enumerate(['a', 'b']):
...   print e
(0, 'a')
(1, 'b')

フィルタリング

lstのうち、functionが真となる要素からなるリストを返す。

list filter(function, lst)
>>> filter(lambda x: isinstance(x, int), [1, 'a', 2, 'b'])
[1, 2]

変更不可能な集合

iterableなオブジェクトから変更不可能な集合(frozenset object)を構築する。

  • 辞書のキーとして利用可能
frozenset_object frozenset(iterable)
>>> frozenset([1, 2, 2, 3, 3, 3])
frozenset([1, 2, 3])

ハッシュ

(可能であれば)オブジェクトのハッシュ値を返す。

  • 等しい値となる数値は必ず同じハッシュ値を持つ
int hash(object)
>>> hash(1)
1
>>> hash(1.0)
1
>>> hash(0x01)
1

オブジェクトの識別値

整数(もしくは調整数)からなるオブジェクトの識別値を返す。

int id(object)
>>> a = b = 1
>>> id(a)
25182600
>>> id(b)
25182600
>>> b = 3
>>> id(b)
25182576

型判定

あるオブジェクト(object)が指定したクラス(classinfo)の(直接か間接かの)インスタンスであるかを判定する(真偽値を返す)。

bool isinstance(object, classingo)
>>> isinstance(1, int)
True
>>> isinstance(1, str)
False
>>> isinstance(1, (int, str))
True

サブクラス判定

あるクラス(class)が指定したクラス(classinfo)の(直接か間接かの)サブクラスであるかを判定する(真偽値を返す)。

bool issubclass(class, classinfo)
>>> issubclass(str, basestring)
True
>>> issubclass(int, basestring)
False

マップ

functionをlstの全要素に適用し、返された値からなるリストを返す。

  • 複数のリストを与えた場合、functionはそれらを引数にとらなければならない
    • functionがNoneであった場合、対応する要素からなるタプルを要素とするリストを返す
list map(function, lst, ...)
>>> map(abs, [1, -1, 2, -2])
[1, 1, 2, 2]
>>> map(cmp, [1, 2, 3, 4], [2, 1, 4, 3])
[-1, 1, -1, 1]
>>> map(None, [1, 2, 3], [4, 5, 6])
[(1, 4), (2, 5), (3, 6)]

最大、最小

max(s[, args, ...])
min(s[, args, ...])
>>> max([1, 2, 3])
3
>>> max(1, 2, 3)
3
>>> min([1, 2, 3])
1
>>> min(1, 2, 3)
1

階乗とモジュロ(剰余)

  • 階乗のモジュロ演算は第3引数zを指定するとpow(x, y)%zよりも効率よく計算される
    • 引数zがある場合、xおよびyは整数で無くてはならず、またyは非負でなければならない(>=Python2.2)
pow(x, y[, z])
>>> 8 % 3
2
>>> pow(2, 3, 3)
2
>>> 2**3
8

数列

startからstop-1まで、stepずつ加算したリストを返す

  • startが省略された場合は0
  • stepが省略された場合は1
range([start,] stop[, step])
>>> range(10)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> range(1, 100, 10)
[1, 11, 21, 31, 41, 51, 61, 71, 81, 91]
>>> range(100, -1, -10)
[100, 90, 80, 70, 60, 50, 40, 30, 20, 10, 0]

メモリ節約

rangeと異なり、全てを同時に記憶しない。

xrange([start,] stop[, step])

標準入力から読み込み

標準流力から1行読み込んで(末尾の改行をのぞいたものを)文字列に変換して返す。

  • EOFが読み込まれるとEOFError
  • promptが存在する場合、末尾の改行を削除したものがプロンプト文字として標準出力に出力される
str raw_input([prompt])
>>> s = raw_input()
test
>>> s
'test'
>>> s = raw_input(': ')
: That's right!
>>> s
"That's right!"

標準入力の評価

eval(raw_input([prompt]))と等価。

input([prompt])
>>> input('?> ')
?> abs(-100)
100

リストに対する再帰的な関数適用

sequenceの先頭2つの要素についてfunctionを順次適用していき、最終的に単一の項を返す。

  • initializerが指定された場合、先頭に置かれる
reduce(function, sequence[, initializer])
>>> reduce(lambda x, y: x + y, [1, 2, 3, 4, 5])
15
>>> reduce(lambda x, y: x + y, [1, 2, 3, 4, 5], 100)
115

逆順に取り出すイテレータ

seqの要素を逆順に取り出すイテレータを返す。

reversed(seq)
>>> reversed('abcedfg')
<reversed object at 0x63190>
>>> for c in reversed('abcedfg'):
...   print c
... 
g
f
d
e
c
b
a

丸め

xを小数点以下n桁で丸めた浮動小数点の値を返す。

  • nは省略されると0
round(x[, n])
>>> round(1.25, 1)
1.3
>>> round(1.25)
1.0

集合

集合オブジェクトを返す。

  • 要素は変更不能でなければならない
    • 集合の集合を作る場合、要素となる集合はfrozensetで無ければならない
set(iterable)
>>> set([1, 2, 2, 3, 3, 3])
set([1, 2, 3])

総和

startとsequenceの要素を左から右に加算して総和を返す。

  • startが省略された場合は0
sum(sequence[, start])
>>> sum([1, 2, 3, 4, 5])
15
>>> sum([1, 2, 3, 4, 5], -10)
5

オブジェクトの型を求める

objectの型を返す。

type_object type(object)
>>> type(str)
<type 'type'>

タプルのリストを生成

対応するリスト要素からタプルの要素を作り、それらからなるリストを返す。

list zip(lst[, lst])
>>> zip([1,2], [3, 4], [5, 6])
[(1, 3, 5), (2, 4, 6)]
Last modified:2007/05/22 02:14:32
Keyword(s):[python]
References: