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

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

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

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

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

■ 概要

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

文字列

他のプログラミング言語と同様に、文字列は基本的な要素のひとつです。

s = "ABCDE"
print type(s)
print len(s)
# -------------------------------- Output --

5

変数 s に文字列を代入します。print 文を使うと、任意の情報が出力されます。組み込み関数 type を使うと、その型が得られます。出力結果を見ると、文字列の型は str となるのが分かります。組み込み関数 len を使うと、文字列の長さ(要素の数)が得られます。出力結果を見ると、その長さは 5 となるのが分かります。

print s[0]
print s[4]
print type(s[0])
# -------------------------------- Output --
A
E

添字を使うと、文字列の各要素を参照できます。先頭の要素を参照するには、添字 0 を使います。末尾の要素を参照するには、文字列の長さ-1である、添字 4 を使います。出力結果を見ると、先頭の文字が A で、末尾の文字が E となるのが分かります。さらに、文字列の各要素の型も str となるのが分かります。

print s[5]
# -------------------------------- Output --
IndexError: string index out of range

文字列の長さを超えて参照しようとすると、例外 IndexError を生じます。

print s[0],s[2],s[4]
# -------------------------------- Output --
A C E

print 文の中で「,」を使うと、そこに空白を挿入します。出力結果を見ると、文字列 C の前後に空白を挿入しているのが分かります。

print "ABCDE"[1],"ABCDE"[3]
# -------------------------------- Output --
B D

文字列は、変数を使わずに、リテラル表記のままで参照できます。出力結果を見ると、2文字目が B で、4文字目が D となるのが分かります。

print s[0],s[2],
print s[4]
# -------------------------------- Output --
A C E

出力結果を見ると、文字目が E が改行されずに、同じ行に出力されているのが分かります。これは、print 文の末尾が「,」であると、そこに空白を挿入するだけで、自動的に改行しないからです。

print s[0],s[2],
print
print s[4]
# -------------------------------- Output --
A C
E

そこで改行したいときには、print 文だけを記述します。出力結果を見ると、改行した後に、E を出力しているのが分かります。

for i in range(3): print i
# -------------------------------- Output --
0
1
2

組み込み関数 range を使うと、任意の範囲内の数を要素とするリストが得られます。for 文では、変数 i に 0 から 2 までの数が順に代入されます。print 文を使って、変数 i の値を出力します。出力結果を見ると、0 から 2 までの数を改行しながら、順に出力しているのが分かります。

for i in range(3): print s[i],
print
# -------------------------------- Output --
A B C

print 文を使って、i 番目の文字 s[i] を空白で区切りながら出力します。出力結果を見ると、0 番目から 2 番目のまでの文字を空白で区切りながら、順に出力しているのが分かります。

s = "XYZ"
for i in range(3):
    print s[i],
print
# -------------------------------- Output --
X Y Z

変数 s に別の文字列を代入します。for 文は、複数行にまたがって記述できます。そのとき、インデントが必要になります。

for i in range(len(s)):
    print i,":",s[i]
# -------------------------------- Output --
0 : X
1 : Y
2 : Z

組み込み関数 range の引数に len(s) を指定すると、変数 i の値は、0 から文字列 s の長さ-1 まで変化します。出力結果を見ると、変数 i の値と i 番目の文字を空白で囲まれた ":" で区切りながら、順に出力しているのが分かります。

for i in range(len(s)):
    print "%i: %s" % (i, s[i])
# -------------------------------- Output --
0: X
1: Y
2: Z

print 文には、書式指定文字を使えます。各書式指定文字には、タプル内に指定された式が順に対応します。%i には i の値を整数として、%s には s[i] の値を文字列として、それぞれの位置に挿入します。

for i in range(len(s)):
    print '"%s"[%i]: %s' % (s, i, s[i])
# -------------------------------- Output --
"XYZ"[0]: X
"XYZ"[1]: Y
"XYZ"[2]: Z

文字列の中で「"」を表現するには、「'」で囲まれた文字列を使います。出力結果を見ると、「"」で囲まれた文字列 s と、[ ] で囲まれた整数 i と、「: 」に続けて i 番目の文字 s[i] を、順に出力しているのが分かります。
==================================
森こねこ 著 ◆ 監修:小泉ひよ子とタマゴ倶楽部

更新♪2009/08/05