Ad

Pythonのリストは他の言語で言うところの配列と同じような物で、複数のデータをまとめて扱うのに便利なデータ型です。 ここではリストを使う上での基本的なことについて解説します。

タプルとの違いについては、「Python​/リストとタプル」を、検索や変換については「Python​/リストの検索と変換」もあわせて参照してください。

リストの初期化 anchor.png Edit

l = [1,2,3,4,5]

のように定義すると、例えば

for i in l:
    print i

結果

1
2
3
4
5

のようにしてループすることができます。

リストの初期化は上記のように実際の値を入れることもできますし、

l = []

のように空のリストを作ることもできます。また全て同じ要素で初期化するなら

l = [0] * 10

のようにも書けます。2つの要素の繰り返しなら、

l = [0,1] * 10

と書く事も可能です。

C言語などとは異なり、型が異なっていても同一のリストに格納できます。

l = [1,"2",u"3"]
for i in l:
    print type(i)

結果

<type 'int'>
<type 'str'>
<type 'unicode'>

ただし、あまりいろいろな型を入れると管理が大変になることもあります。

Page Top

よく使う機能 anchor.png Edit

Page Top

要素へのアクセスと切り出し anchor.png Edit

リストの要素へのアクセスは「[]」を使います。一つの要素の取得だけではなく「:」を使うと複数の要素も配列として取り出せます。また、負の数を指定すると最後から数えた要素を取得できます。

l = [1,2,3,4]
print l[0]
print l[0:2]
print l[-1]

結果

1
[1, 2]
4
Page Top

要素の追加 anchor.png Edit

最後に追加するときは「append」を使います。

l = [1,2,3]
l.append(4)
print l

結果

[1, 2, 3, 4]

好きな場所に追加するときは「insert」を使います。第一引数がインデックス、第二引数が追加する要素です。

l = [1,2,3]
l.insert(1,10)
print l

結果

[1, 10, 2, 3]
Page Top

要素の削除 anchor.png Edit

単純に削除するなら「del」を使います。

l = [1,2,3]
del l[2]
print l

結果

[1, 2]

「:」を使うと二つ以上同時に消す事も可能です。

l = [1,2,3]
del l[0:2]
print l

結果

[3]

実際には、単に消すだけではなく、消した要素を取り出したいときが多いと思います。その時には「pop」を使います。

引数にインデックスを指定するとその要素が、指定しなければ最後の要素が消され、消した要素を返します。

l = [1,2,3]
d = l.pop()
print l,d

結果

[1, 2] 3

これとappend、insertを組み合わせて使うと先入先出、後入先出などのいろいろな順序で要素が追加、削除できます。

Page Top

リストの長さ anchor.png Edit

リストの要素数、またはよく長さと呼ばれる物は、「len」関数で求められます。

l = [1,2,3,4]

print len(l)

結果

4
Page Top

ループ anchor.png Edit

リストの要素についてループするのは以下のようにします。

l = [1,2,3]
for i in l:
    print i

結果

1
2
3

インデックスも一緒に取得する場合は「enumerate」を使います

l = [1,2,3]
for i,d in enumerate(l):
    print i,d
0 1
1 2
2 3

他の言語を知っていると、

for i in range(len(l)):
    print l,l[i]

のように書きたくなりますが、enumerateの方がすっきりします。

Page Top

リストのコピー anchor.png Edit

リストをコピーするには、「list」を使います。

l = [1,2,3]
l_copy = list(l)
print l_copy

結果

[1, 2, 3]

ただし、要素がリストやクラスのインスタンスなどの時には、実体ではなく参照がコピーされるので注意が必要です。

Page Top

リストの並べ替え anchor.png Edit

昇順に並べ替えるなら「sort」を使います。 sortは元のリストを変更します。

l = [2,1,3]
l.sort()
print l

結果

[1, 2, 3]

元のリストを変更せずに新しい並べ替えられたリストがほしいときは、「sorted」関数を使います。

l = [2,1,3]
l_sorted = sorted(l)
print l
print l_sorted

結果

[2, 1, 3]
[1, 2, 3]

sort、sorted関数共に逆順にするなら「reverse=True」を引数で指定します。

l = [2,1,3]
l.sort(reverse=True)
print l

結果

[3, 2, 1]

「cmp」引数に関数を指定することで複雑なルールの並べ替えも可能です。 関数は2つの引数をとり、実際に並べ替えを行う時にはここに要素が代入されます。 その戻り値が正なら最初の引数の要素が大きいと判断して昇順に並べます。 以下の例では文字列の2文字目を整数にした場合の昇順に並べ替えます。

l = ["123","514","792"]

l.sort(cmp = lambda x,y : int(x[1]) - int(y[2]) )

print l

結果

['514', '123', '792']

ラムダ式については「Python​/ラムダ式」も参照してください。

Page Top

その他 anchor.png Edit

要素の検索、変換などより高度な話題については「Python​/リストの検索と変換」を参照してください。

他にもリストに関わる機能はとてもたくさんありますが、長くなるのでそれはまたページを改めて記載していく予定です。


Front page   Edit Freeze Diff Backup Upload Copy Rename ReloadPrint View   New Page Page list Search Recent changes   Help   RSS of recent changes (RSS 1.0) RSS of recent changes (RSS 2.0) RSS of recent changes (RSS Atom) Powered by xpWiki
Counter: 1182, today: 1, yesterday: 0
Princeps date: 2016-12-27 (Tue) 09:39:28
Last-modified: 2017-09-04 (Mon) 05:23:54 (JST) (773d) by njf
広告

ログイン

ユーザー名:


パスワード:





パスワード紛失


NJF