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

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

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

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

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

■ 概要

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

リスト

リストは基本的な要素のひとつです。これを文字列と比較しながら、解説します。

l = range(5)
print type(l)
print len(l)
print l
# -------------------------------- Output --

5
[0, 1, 2, 3, 4]

変数 l に range によって得られるリストを代入します。組み込み関数 type を使うと、その型が得られます。出力結果を見ると、文字列の型は list となるのが分かります。組み込み関数 len を使うと、リストの長さ(要素の数)が得られます。出力結果を見ると、その長さは 5 となるのが分かります。print 文を使うと、[ ] で囲まれた中に、リスト内の要素が空白で区切られて出力されます。

print l[0]
print l[4]
print type(l[0])
# -------------------------------- Output --
0
4

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

print l[5]
# -------------------------------- Output --
IndexError: list index out of range

リストの長さを超えて参照しようとすると、例外 IndexError を生じます。

print l[0],l[2],l[4]
# -------------------------------- Output --
0 2 4

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

print range(5)[1],range(5)[3]
# -------------------------------- Output --
1 3

リストは、変数を使わずに、式のままで参照できます。出力結果を見ると、1番目の要素が 1 で、3番目の要素が 3 となるのが分かります。

list = range(3,6)
print list
# -------------------------------- Output --
[3, 4, 5]

組み込み関数 range を使うと、指定された範囲内の数を要素とするリスト list が得られます。出力結果を見ると、3 から 5 までの整数を要素とするリストとなるのが分かります。

for i in range(3):
    print list[i],
print
# -------------------------------- Output --
3 4 5

for 文では、変数 i に 0 から 2 までの数が順に代入されます。print 文を使って、リスト内の i 番目の要素 list[i] を出力します。出力結果を見ると、3 から 5 までの数を空白で区切りながら、順に出力しているのが分かります。

for i in range(5):
    print "list[0:%i] %s" % (i, list[0:i])
print
# -------------------------------- Output --
list[0:0] []
list[0:1] [3]
list[0:2] [3, 4]
list[0:3] [3, 4, 5]
list[0:4] [3, 4, 5]

部分リストを得るには、スライスを指定します。部分リストを切断する位置を「:」の前後に指定します。for 文では、変数 i に 0 から 5 までの数が順に代入されます。print 文を使って、式 list[0:i] によって、0 番目と i 番目で切断した部分リストを出力します。出力結果を見ると、末尾の切断する位置を 0 から 4 まで変化させながら、部分リストを順に出力しているのが分かります。末尾の位置を 0 で切断すると、要素をひとつも持たない空リストが得られます。末尾の位置がリストの長さを超えると、その値は無視されて、末尾の位置までで切断されます。

s = "ABC"
for i in range(-3,3):
    print '"%s"[%i]: %s' % (s, i, s[i])
print
# -------------------------------- Output --
"ABC"[-3]: A
"ABC"[-2]: B
"ABC"[-1]: C
"ABC"[0]: A
"ABC"[1]: B
"ABC"[2]: C

リストに対する添字の指定は、そのまま文字列にも適用できます。負の数は、末尾からの相対位置(リストの長さ-位置)を表します。出力結果を見ると、-3 によって先頭の要素 A を、-1 によって末尾の要素 C を、出力しているのが分かります。

for i in range(5):
    print '"%s"[:%i] %s' % (s, i, s[:i])
print
# -------------------------------- Output --
"ABC"[:0] 
"ABC"[:1] A
"ABC"[:2] AB
"ABC"[:3] ABC
"ABC"[:4] ABC

先頭の位置を省略すると、0 が指定されたものと見なされます。出力結果を見ると、先頭から、末尾の位置 0〜4 までで切断した部分文字列を、順に出力しているのが分かります。

for i in range(5):
    print '"%s"[%i:] %s' % (s, i, s[i:])
print
# -------------------------------- Output --
"ABC"[0:] ABC
"ABC"[1:] BC
"ABC"[2:] C
"ABC"[3:] 
"ABC"[4:]

末尾の位置を省略すると、要素数が指定されたものと見なされます。出力結果を見ると、先頭の位置 0〜4 から、末尾までで切断した部分文字列を、順に出力しているのが分かります。

for i in range(5):
    print '"%s"[1:%i] %s' % (s, i, s[1:i])
print
# -------------------------------- Output --
"ABC"[1:0] 
"ABC"[1:1] 
"ABC"[1:2] B
"ABC"[1:3] BC
"ABC"[1:4] BC

先頭の位置と末尾の位置を指定すると、その位置で切断された、部分文字列が得られます。
==================================
森こねこ 著 ◆ 監修:小泉ひよ子とタマゴ倶楽部

更新♪2009/08/04