【Python入門】リスト(list)について,Python3

基本的なシーケンス型のうちのひとつがリスト(list)で、とても重要です。

リストを使いこなせなければ要素を管理することはできません。

リストはミュータブルで、変更可能なデータ構造です。要素の挿入や削除などを行うことができます。

[]またはlist()でリストを作成

>>> empty_list = []
>>> empty_list
[]

>>> type(empty_list)
<class 'list'>

>>> empty_list2 = list()
>>> empty_list2
[]

>>> type(empty_list2)
<class 'list'>

>>> sample_list = ['first','second','third']
>>> sample_list
['first','second','third']

>>> print(sample_list)
['first','second','third']

他のデータ型をリスト型へ変換

>>> list('python') #文字列をリストへ
['p', 'y', 't', 'h', 'o', 'n']

>>> sample_tuple = ('first','second','third') #タプルをリストへ
>>> list(sample_tuple)
['first', 'second', 'third']

>>> today = '2018/2/28'
>>> today.split('/') #split()で分割しリストへ
['2018', '2', '28']

要素の取り出し。オフセットを利用

>>> sample_list = ['first', 'second', 'third']
>>> sample_list[0]
'first'

>>> sample_list[1]
'second'

>>> sample_list[2]
'third'

>>> sample_list[-1]
'third'

>>> sample_list[-2]
'second'

>>> sample_list[-3]
'first'

>>> sample_list[5] #sample_listに5番目はないので、例外発生
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: list index out of range

リストのリスト

>>> sample_list = ['first', 'second', 'third']
>>> sample_list2 = [1, 2, 3]
>>> super_list = [sample_list, sample_list2]
>>> super_list[0]
['first', 'second', 'third']
>>> super_list[1]
[1, 2, 3]

>>> sample_list3 = [1,'second',3] #リストの中身の型は同一でなくてよい
>>> sample_list3
[1, 'second', 3]

オフセットで要素を書き換え

>>> animals = ['dog', 'cat', 'elephant']
>>> animals[1] = 'bird'
>>> animals
['dog', 'bird', 'elephant']

リストのスライス

>>> word = ['p', 'y', 't', 'h', 'o', 'n']

>>> word[0:3]
['p', 'y', 't']

>>> word[::2]
['p', 't', 'o']

>>> word[::-2]
['n', 'h', 'y']

>>> word[::-1] #リストの要素が逆順になる
['n', 'o', 'h', 't', 'y', 'p']

リストの末尾への要素追加

>>> word = ['p', 'y', 't', 'h', 'o', 'n']
>>> word.append('3')
>>> word
['p', 'y', 't', 'h', 'o', 'n', '3']

リストどうしをひとつに結合する

>>> word1 = ['p', 'y', 't', 'h', 'o', 'n']
>>> word2 = ['c', 'a', 'r', 'n', 'i', 'v', 'a', 'l']
>>> word1.extend(word2)
>>> word1
['p', 'y', 't', 'h', 'o', 'n', 'c', 'a', 'r', 'n', 'i', 'v', 'a', 'l']


>>> word1 = ['p', 'y', 't', 'h', 'o', 'n']
>>> word2 = ['c', 'a', 'r', 'n', 'i', 'v', 'a', 'l']
>>> word1 += word2
>>> word1
['p', 'y', 't', 'h', 'o', 'n', 'c', 'a', 'r', 'n', 'i', 'v', 'a', 'l']

オフセットを利用した要素の追加

>>> animals = ['dog', 'cat', 'elephant']
>>> animals.insert(1, 'bird')
>>> animals
['dog', 'bird', 'cat', 'elephant']

オフセットを利用した要素の削除

>>> animals = ['dog', 'cat', 'elephant']
>>> del animals[1]
>>> animals
['dog', 'elephant']

値を指定してリストの要素削除

>>> animals = ['dog', 'cat', 'elephant']
>>> animals.remove('elephant')
>>> animals
['dog', 'cat']

オフセットを指定して要素取り出し、削除

>>> animals = ['dog', 'cat', 'elephant']
>>> animals.pop()
'elephant'

>>> animals
['dog', 'cat']

>>> animals.pop(1)
'cat'

>>> animals
['dog']

要素の値を指定してオフセットを知る

>>> animals = ['dog', 'cat', 'elephant']
>>> animals.index('elephant')
2

inで要素の確認

>>> animals = ['dog', 'cat', 'elephant']
>>> 'cat' in animals
True
>>> 'bird' in animals
False

リストの値の個数を計算

>>> animals = ['dog', 'cat', 'elephant']
>>> animals
['dog', 'cat', 'elephant']
>>> animals.count('dog')
1
>>> animals.append('dog')
>>> animals
['dog', 'cat', 'elephant', 'dog']
>>> animals.count('dog')
2

リストの要素を文字列へ変換

>>> animals = ['dog', 'cat', 'elephant']
>>> ''.join(animals)
'dogcatelephant'
>>> ', '.join(animals)
'dog, cat, elephant'
>>> ': '.join(animals)
'dog: cat: elephant'

リスト要素の並び替え

>>> animals = ['dog', 'cat', 'elephant']
>>> sorted_animals = sorted(animals)
>>> sorted_animals
['cat', 'dog', 'elephant']

>>> animals
['dog', 'cat', 'elephant']

>>> animals.sort()
>>> animals
['cat', 'dog', 'elephant']

>>> animals.sort(reverse=True) #降順になる
>>> animals
['elephant', 'dog', 'cat']

リスト要素を逆順にする

>>> xlist = ['x', 'y', 'z']
>>> for v in reversed(xlist):
...     print(v)
... 
z
y
x

リストの要素の数を取得

>>> animals = ['dog', 'cat', 'elephant']
>>> len(animals)
3

リストから重複を取り除く

>>> animals = ['cat', 'dog', 'cat', 'dog']
>>> cdlist = list(set(animals))
>>> cdlist
['dog', 'cat']  # 1度集合にしているため順不同になることに注意

=による代入。copy()によるコピー

=による代入とcopy()によるコピーの違いは重要です。
同じリストを作りたいと思った時に、両者の違いをはっきりと認識しておきましょう。

>>> animals = ['dog', 'cat', 'elephant']
>>> animals
['dog', 'cat', 'elephant']

>>> animals2 = animals
>>> animals[0] = 'bird'
>>> animals
['bird', 'cat', 'elephant']

>>> animals2 #animalsと同じリストを参照
['bird', 'cat', 'elephant']

>>> animals2[1] = 'turtle'
>>> animals2
['bird', 'turtle', 'elephant']

>>> animals #animals2を編集したらanimalsにも反映
['bird', 'turtle', 'elephant']

aのリストとは別の新しいリストをつくる。
手法は3つ。
・copy()
・list()
・[:]

>>> a = [1, 2, 3]
>>> b = a.copy()
>>> c = list(a)
>>> d = a[:]
>>> a[0] = 4
>>> a
[4, 2, 3]
>>> b
[1, 2, 3]
>>> c
[1, 2, 3]
>>> d
[1, 2, 3]

リストの各要素に同じメソッドを適用する

リストの内包表記を利用できる

>>> oldlist = [1, 2, 3]
>>> newlist = [x * 2 for x in oldlist]  # 各要素を2倍する
>>> newlist
[2, 4, 6]