FrontPage

2009/11/16からのアクセス回数 13407

リスト

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]

もう一つ、各要素のルートを取る例を示します。

  1. sqrtを式のままリストに保持
  2. sqrtの値を5桁の数値で保持
  3. リストを整形して出力した場合

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)

sage0.png

リストの値を線で連結する場合、plotjoined=trueを指定します。

list_plot([i^2 for i in range(25)], xmax=25, plotjoined=true)

sage0-1.png

コメント

選択肢 投票
おもしろかった 0  
そうでもない 0  
わかりずらい 0  

皆様のご意見、ご希望をお待ちしております。


(Input image string)

トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
SmartDoc