Pythonの文字列/ファイル操作/組み込み関数(もしくは落ち穂拾い):特集:Visual Studioで始めるPythonプログラミング(3/3 ページ)
Pythonでプログラミングをする上で必須の知識といえる文字列やファイルの扱い方の基本、便利に使える組み込み関数を本稿では紹介する。
組み込み関数を幾つか
以下ではPythonの組み込み関数で便利に使えるものをカテゴリに分けて幾つか見ていく。
反復可能なオブジェクトに対する処理
反復可能なオブジェクトの要素に対して、何らかの処理を行う関数としては次のものがある。
関数 | 説明 |
---|---|
all | 全ての要素が真と評価されたらTrueを、そうでなければFalseを返す(反復可能オブジェクトが空の場合はTrue) |
any | 全ての要素のいずれかが真と評価されたらTrueを、全てが偽と評価されたらFalseを返す(反復可能オブジェクトが空の場合はFalse) |
filter | 第1引数に渡した関数で、各要素を評価し、その結果が真となる要素からなるイテレータを返送する |
len | 要素数を返す |
map | 第1引数に渡した関数を各要素に適用するようなイテレータを返送する |
reversed | 要素を逆順に返送するイテレータを返送する |
sorted | 各要素をソートした結果を格納する新たなリストを返送する(元の反復可能オブジェクトは変更されない)。ソートに使用する関数も指定可能 |
sum | 各要素の総和を計算する |
zip | 引数に渡した複数の反復可能オブジェクトの各要素を組み合わせたイテレータを返送する |
反復可能なオブジェクトに対する処理 |
例を以下に示す。各行のコメントには対話環境での実行結果(評価結果)と必要ならかっこ内に説明を付記している。
all([0, 1, 2]) # False
all([1, 2, 3]) # True
all([]) # True
any([0, 1, 2]) # True
any([None, True, False]) # True
any([]) # False
list(filter(lambda x: x % 2 == 0, list(range(5)))) # [0, 2, 4](偶数を抽出)
len(list(range(10))) # 10(10要素からなるリストの要素数)
list(map(lambda x: x * x, list(range(5)))) # [0, 1, 4, 9, 16](各要素を二乗したリスト)
list(reversed(range(5))) # [4, 3, 2, 1, 0]
sum([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]) # 55
list(zip([1, 2, 3], ['a', 'b', 'c', 'd'])) # [(1, 'a'), (2, 'b'), (3, 'c')]
文字列関連
文字列に関連する組み込み関数としては次のものがある。
関数 | 説明 |
---|---|
chr | 指定した引数をUnicodeコードポイントとするUnicode文字を返す |
ord | 指定した文字のUnicodeコードポイントを返す |
eval | 引数に渡した文字列をPython式として解析/評価する |
exec | 引数に渡した文字列を一連のPython文として解析/実行する |
文字列に関連する組み込み関数 |
組み込み関数chr/ordは対となる機能を提供する。組み込み関数eval/execの違いは前者がPythonの式(単一の式、あるいは「x if y if z」のような条件式の連続)を解析/評価するのに対して、後者はPythonの文(例えば、関数定義など)を解析/実行する点だ(複雑な処理を動的に実行するのであれば組み込み関数execを使用する)。これら2つの関数は文字列だけではなく、組み込み関数compileで作成可能なコードオブジェクトも引数に受け取る(が、本稿では取り上げない。興味のある方は「compile」などを参照のこと)。
以下に例を示す。先ほどと同様、対話環境での実行結果(評価結果)をコメントに記す(説明はかっこ内に記した)。
ord('ほ') # 12411
chr(12411) # 'ほ'
hex('ほ') # '0x307b'
chr(0x307b) # 'ほ'
import random # (乱数を利用)
flag = random.randint(0, 9) % 2 # (1/2で真か偽)
eval('"insider.net" if flag else "build insider"') # (変数flagの値次第)
eval('def foo(): print("hello")') # (組み込み関数evalでは評価できない)
exec('def foo(): print("hello")') # (組み込み関数execはこれを実行できる)
本特集では(Visual Studioユーザーに向けて)Pythonプログラミングを始めるに当たって必要となりそうな事項を取り上げてきた(とはいえ、本特集で取り上げてきた要素はVisual Studioを使っていないPython初心者の方々にも有益だと考えている)。他にも説明すべき事項は多々あるが、これまでに取り上げてきた要素をマスターすれば、取りあえず他者のコードを読み進めたり、自分でちょっとしたPythonコードを書いたりしながら、Pythonへの理解を深めることができるようになるはずだ。
Copyright© Digital Advantage Corp. All Rights Reserved.