20.リスト1

プログラム言語の中では特殊なデータの形を取り扱うことができます。

それが辞書型やリスト型といったデータ構造のものです。

pythonではリスト型というデータ構造を定義できます。
リスト型のデータを作るには [ ] 四角カッコ を用います。 
四角カッコで括った中に、格納したいデータの形でデータを入力します。

リスト型の値は、要素を複数持つことができます。
リストの値に要素をたくさん入れ込むには カンマ でつなぎます。
[]
[要素,要素,・・・]

例:
[1,2,3]

リスト型の定義

In [1]:
# リスト型
[1,2,3,4,5]
Out[1]:
[1, 2, 3, 4, 5]
In [2]:
# 空のリスト(まだ要素を持っていない)
[]
Out[2]:
[]

インデックスと間違いやすいので注意

In [3]:
# これはインデックス
'abcde'[3]
Out[3]:
'd'
In [4]:
# リスト型の変数を定義
a = [1,2,3]
print(a)
print(type(a))
[1, 2, 3]
<class 'list'>

リスト型というのは複数の要素を持ったデータ構造になっていて、
リスト型の中に入れられるデータの形については特に決まりはなく
どんなデータでも入れられます。

In [5]:
a = [1,2,3,'4']
print(a)
[1, 2, 3, '4']

リストの中にリストを格納できます。

要素を取り出したい場合は
リストの分だけインデックスを用います。

In [6]:
# リストの中にリストを定義
lis_lis = [[1,2,3],[4,5,6],[7,8,9]]
print(lis_lis)

# 取り出しもインデックスで
print(lis_lis[1][2])
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
6

リストの要素の追加

変数.append(要素)

変数 += リスト
変数.extend(リスト)
リスト + リスト

In [7]:
a = [1,2,3]
# 要素の追加 append
a.append(4)
print(a)
[1, 2, 3, 4]
In [8]:
a = [1,2,3]
# 要素の追加 +=
a += a
print(a)
[1, 2, 3, 1, 2, 3]
In [9]:
a = [1,2,3]

# 要素の追加 extend
a.extend([4,5])
print(a)
[1, 2, 3, 4, 5]
In [10]:
a = [1,2,3]

# 要素の追加 リスト + リスト
a = a + a
print(a)
[1, 2, 3, 1, 2, 3]

値を一つだけ入れるのがappend

その他はリストをリストに追加する方法です。

リスト型の値は複数の要素をいれ込めるので
取り出し方も様々な取り出し方があります。

インデックスを使って参照する方法

In [11]:
a = [1,2,3]
# 最初の要素を取り出す
print(a[0])
print(type(a[0]))
1
<class 'int'>
In [12]:
a = [1,2,3,4,5]
# 複数の要素を取り出す(3番目から4番目まで)
print(a[2:4])
print(type(a[2:4]))
[3, 4]
<class 'list'>
In [13]:
a = [1,2,3,4,5]
# 複数の要素を取り出す(2番目から最後まで)
print(a[1:])

# 複数の要素を取り出す(最初から3番目まで)
print(a[:3])
[2, 3, 4, 5]
[1, 2, 3]

リストでは要素の順番が重要になります。

スライスを使うと複数の要素に対応します。

要素の変更

リスト型変数[インデックス値] = 変更後の値

リスト型変数[開始:終了] = [リスト]
リスト型変数[開始:] = [リスト]
リスト型変数[:終了] = [リスト]

In [14]:
a = [1,2,3,4,5]
print(a)
# 3番目の要素を 9 に変更
a[2] = 9
print(a)
[1, 2, 3, 4, 5]
[1, 2, 9, 4, 5]
In [15]:
a = [1,2,3,4,5]
# 複数の要素を変更(3番目から4番目まで
a[2:4] = [9,8]
print(a)

a = [1,2,3,4,5]
# 複数の要素を変更(2番目から最後まで)
a[1:] = [7,6]
print(a)

a = [1,2,3,4,5]
# 複数の要素を変更(最初から3番目まで)
a[:3] = [8,8,8,8]
print(a)
[1, 2, 9, 8, 5]
[1, 7, 6]
[8, 8, 8, 8, 4, 5]

インデックスの開始、終了を用いた場合は
複数の要素が同時に置き換わるので
順番にも影響が出ます。注意しましょう。