2009/11/16からのアクセス回数 13935
pythonのリストについて簡単に説明します。
pythonでリストは、項目をカンマ区切りで並べたリストをカギ括弧で括って表します。 空のリストは
[]
になります。
変数l1に1, 2, 3, 4の4個の要素をリストにセットするときは、以下のようにします。
sage入力:
# リストの処理 l1 = [1, 2, 3, 4]
リストの要素およびサブリストは、以下のように取り出します。インデックスは0始まりです。
要素: リスト[要素のインデックス] 指定範囲のサブリスト: リスト[開始インデックス:終了インデックス] ··· 終了インデックスを含めません。 指定以降のサブリスト: リスト[開始インデックス:] 先頭から指定までのサブリスト: リスト[:終了インデックス] ··· 終了インデックスを含めません。
sage入力:
print l1[2] print l1[1:3] print l1[2:] print l1[:2]
3
[2, 3]
[3, 4]
[1, 2]
リストの連結は、+で行います。 sage入力:
l2 = [9, 8, 7] l1 + l2
[1, 2, 3, 4, 9, 8, 7]
範囲生成関数rangeを使うと簡単に指定した範囲のリストを生成することができます。
range(終了) : 0から終了の前までの整数のリストを生成します range(開始, 終了) : 開始インデックスから終了インデックスの前まで整数のリストを生成します range(開始, 終了, 増分) : 開始から終了の前までの値を増分ごとに追加したリストを生成します
以下にrangeの例を示します。
sage入力:
print range(3) print range(1, 4) print range(-1, 7, 2)
[0, 1, 2]
[1, 2, 3]
[-1, 1, 3, 5]
リスト内包は、式とそれにつづくfor節からなり、各要素に対し、式を評価した結果をリストとして返します。
以下の例は、リストl1の各要素の自乗を要素とするリストを返します。
sage入力:
[s^2 for s in l1]
[1, 4, 9, 16]
同様の処理をfor文を使って処理スト以下のようになります。リスト内包が便利なことが分かります。 sage入力:
l3=[] for s in l1: l3.append(s^2) print l3
[1, 4, 9, 16]
もう一つ、各要素のルートを取る例を示します。
sage入力:
s1 = [sqrt(s) for s in l1] print s1 print [n(s, digits=5) for s in s1] view(s1)
[1, sqrt(2), sqrt(3), 2]
[1.0000, 1.4142, 1.7320, 2.0000]
[1,√2,√3,2]
2つのリストの各要素をリストとして結合したい場合に、zipを使います。
以下の例では、数値と文字のリストをzipで結合します。
sage入力:
t1 = ['a', 'b', 'c', 'd'] print t1 zip(l1, t1)
['a', 'b', 'c', 'd']
[(1, 'a'), (2, 'b'), (3, 'c'), (4, 'd')]
sum関数は、リストの値の和を返します。
sage入力:
# l1の1文字目はLです! sum(l1)
10
flattenは、入れ子になったリストのすべての要素を1個のリストに並べます。
sage入力:
print [l1, l2] flatten([l1+l2])
[[1, 2, 3, 4], [9, 8, 7]]
[1, 2, 3, 4, 9, 8, 7]
これで、ようやくリストプロットの例を説明することができます。
list_plot(プロットするリスト)
0から24までの値の自乗の値をプロットします。
sage入力:
list_plot([i^2 for i in range(25)], xmax=25)
リストの値を線で連結する場合、plotjoined=trueを指定します。
list_plot([i^2 for i in range(25)], xmax=25, plotjoined=true)
皆様のご意見、ご希望をお待ちしております。