Java.use(better, Python)《3》文字列とリスト(3)

記事一覧《こちらに移動中です》2006年7月12日 (水)

Java.use(better, Python)  # Jython はじめました

《3》文字列とリスト(3)《Jython2.5.0》

《著》森こねこ・小粒ちゃん+∞《監修》小泉ひよ子とタマゴ倶楽部
第1版♪2003/05/23

■ 概要

この記事は、Jython セミナー(2003)のために作成した資料をもとに、加筆、再構成したものです。

組み込み関数

文字列やリストには、便利な組み込み関数が提供されています。

print dir("")
# -------------------------------- Output --
['__add__', '__class__', '__contains__', '__delattr__', '__doc__', '__eq__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__getslice__', '__gt__', '__hash__', '__init__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__', '__str__', 'capitalize', 'center', 'count', 'decode', 'encode', 'endswith', 'expandtabs', 'find', 'index', 'isalnum', 'isalpha', 'isdigit', 'islower', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'replace', 'rfind', 'rindex', 'rjust', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']

組み込み関数 dir を使うと、適用可能な属性の一覧が得られます。空文字列 "" を引数にすると、文字列に何を適用できるかが分かります。

print dir([])
# -------------------------------- Output --
['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__delslice__', '__doc__', '__eq__', '__ge__', '__getattribute__', '__getitem__', '__getslice__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmul__', '__setattr__', '__setitem__', '__setslice__', '__str__', 'append', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']

組み込み関数 dir を使うと、適用可能な属性の一覧が得られます。空リスト [] を引数にすると、リストに何を適用できるかが分かります。

list = "a,b,c".split(",")
print list
# -------------------------------- Output --
['a', 'b', 'c']

組み込み関数 split を使うと、引数に指定した文字列で分割した、部分文字列を要素とするリストが得られます。出力結果を見ると、"," の位置で分割した部分文字列が、リストの各要素となるのが分かります。

for e in list:
    print e,
print
# -------------------------------- Output --
a b c

for 文では、変数 e にリスト list の要素が順に代入されます。出力結果を見ると、リスト内の要素を空白で区切りながら、順に出力しているのが分かります。

for i in range(len(list)):
    print 'list[%i] %s' % (i, list[i])
# -------------------------------- Output --
list[0] a
list[1] b
list[2] c

for 文では、変数 i に 0 からリストの長さ-1 までの数が順に代入されます。出力結果を見ると、リスト内の要素を改行しながら、順に出力しているのが分かります。

str = ",".join("123456789")
print str
# -------------------------------- Output --
1,2,3,4,5,6,7,8,9

組み込み関数 join を使うと、引数に指定した文字列を構成する各要素に対して、対象となる文字列で接合した新たな文字列が得られます。出力結果を見ると、各要素を "," で接合した文字列となるのが分かります。

list = str.split(",")
print list
# -------------------------------- Output --
['1', '2', '3', '4', '5', '6', '7', '8', '9']

接合した文字列 str を、split で分割すると、1 から 9 までの数に相当する文字列を要素とするリスト list が得られます。

sum = 0
for e in list:
    sum += int(e)
print "sum: %s" % sum
# -------------------------------- Output --
sum: 45

リスト list 内の要素を数と見なして合計した値を求めます。変数 sum には、初期値として 0 を代入します。for 文では、変数 e にリスト list の要素が順に代入されます。組み込み関数 int を使うと、引数に指定した文字列を整数に変換した値が得られます。出力結果を見ると、1 から 9 までの数の合計が 45 となるのが分かります。

values = []
for e in list:
    values.append(int(e))
print values
# -------------------------------- Output --
[1, 2, 3, 4, 5, 6, 7, 8, 9]

1 から 9 までの数を要素とするリストを生成します。for 文では、変数 e にリスト list の要素が順に代入されます。組み込み関数 append を使うと、引数に指定した要素をリストの末尾に追加します。出力結果を見ると、リスト values 内の各要素が、文字列ではなく、整数となるのが分かります。

sum = 0
for e in values:
    sum += e
print "sum: %s" % sum
# -------------------------------- Output --
sum: 45

リスト values 内の要素を合計した値を求めます。変数 sum には、初期値として 0 を代入します。for 文では、変数 e にリスト values の要素が順に代入されます。出力結果を見ると、1 から 9 までの数の合計が 45 となるのが分かります。

list = [e for e in "ABCDE"]
print list
# -------------------------------- Output --
['A', 'B', 'C', 'D', 'E']

リストの中で for を使うと、任意の要素を持つリストを簡単に生成できます。変数 e に文字列の各要素が順に代入されます。すると、各文字を要素とするリスト list が得られます。

list = [int(e) for e in "12345"]
print list
# -------------------------------- Output --
[1, 2, 3, 4, 5]

変数 e に文字列の各要素が順に代入されます。すると、各文字列を整数と見なしたものを要素とするリスト list が得られます。

list = ",".join("123456789").split(",")
values = [int(e) for e in list]
print values
# -------------------------------- Output --
[1, 2, 3, 4, 5, 6, 7, 8, 9]

すると、append を使わなくても、1 から 9 までの数を要素とするリストを生成できます。
==================================
森こねこ 著 ◆ 監修:小泉ひよ子とタマゴ倶楽部

更新♪2009/08/05