本記事では、Python3.8でリスト(list)の使い方について解説しています。
目次
空リストの生成
要素を持たない空リストを作成することができます。
l1 = []
print(l1)
# []
l2 = list()
print(l2)
# []
リストの指定要素へのアクセス
リストの要素を取り出すには、取り出す要素の位置を示すインデックスを[]
で指定します。
先頭から要素を指定する
l = ['aa', 'bb', 'cc', 'dd', 'ee']
# リストは0番目から始まる
print(l[0])
# aa
print(l[1])
# bb
print(l[2])
# cc
末尾から要素を指定する
インデックスにマイナスを指定することで末尾から何番目の要素を抜き出すか指定することができます。
# -1はリストの末尾から1番目
print(l[-1])
# ee
# -2はリストの末尾から2番目
print(l[-2])
# dd
指定範囲のリストを抜き出す
[start:end]
で指定範囲の要素を抜き出すことができます。
# 1番目から2番目までの要素を抜き出す
print(l[1:3])
# ['bb', 'cc']
# [:2]は[0:2]と同義であるため、0番目から1番目までの要素を抜き出す
print(l[:2])
# ['aa', 'bb']
# 0番目から末尾から1番目前までの要素を抜き出す
print(l[:-1])
# ['aa', 'bb', 'cc', 'dd']
print(l[-3:-1])
# 末尾の3番目から末尾から1番目前までの要素を抜き出す
# ['cc', 'dd']
リストの編集
指定要素/指定範囲を書き換える
l1 = ['aa', 'bb', 'cc', 'dd', 'ee']
l1[2] = 'xx'
print(l1)
# ['aa', 'bb', 'xx', 'dd', 'ee']
l2 = ['aa', 'bb', 'cc', 'dd', 'ee']
l2[1:3] = ['xx', 'yy']
print(l2)
# ['aa', 'xx', 'yy', 'dd', 'ee']
要素を追加する
l = ['aa', 'bb', 'cc', 'dd', 'ee']
l.append('xx')
print(l)
# ['aa', 'bb', 'cc', 'dd', 'ee', 'xx']
リストを連結する
+演算子
でリストを連結することができます。
l1 = ['aa', 'bb', 'cc', 'dd']
l2 = ['xx', 'yy']
l = l1 + l2
print(l)
['aa', 'bb', 'cc', 'dd', 'xx', 'yy']
また、extendメソッドでもリストを連結することができます。
l1 = ['aa', 'bb', 'cc', 'dd']
l2 = ['xx', 'yy']
l1.extend(l2)
print(l1)
# ['aa', 'bb', 'cc', 'dd', 'xx', 'yy']
特定の場所に要素を挿入する
l = ['aa', 'bb', 'cc', 'dd', 'ee']
l.insert(1, 'xx')
print(l)
# ['aa', 'xx', 'bb', 'cc', 'dd', 'ee']
要素を削除する
インデックスを指定して要素を削除することができます。
l = ['aa', 'bb', 'cc', 'dd', 'ee']
del l[1]
print(l)
# ['aa', 'cc', 'dd', 'ee']
removeメソッド
で値を指定して要素を削除することができます。
l = ['aa', 'bb', 'cc', 'dd', 'ee']
l.remove('bb')
print(l)
# ['aa', 'cc', 'dd', 'ee']
リストによるスタック、キュー
popメソッドはリストの末尾の要素を削除して返します。
l = []
for i in ['aa', 'bb', 'cc', 'dd', 'ee']:
l.append(i)
print(f'全要素 : {l}')
for i in range(len(l)):
l.pop()
print(f'{i} : {l}')
# 全要素 : ['aa', 'bb', 'cc', 'dd', 'ee']
# 0 : ['aa', 'bb', 'cc', 'dd']
# 1 : ['aa', 'bb', 'cc']
# 2 : ['aa', 'bb']
# 3 : ['aa']
# 4 : []
要素の特定
リストに特定の要素があるか判定する
in演算子
でリストの中に指定した要素が存在するか判定することができます。
l = ['aa', 'bb', 'cc', 'dd', 'ee']
print('bb' in l)
# True
print('xx' in l)
# False
要素の位置を特定する
indexメソッド
でリストの中に指定要素が存在する位置を求めることができます。
l = ['aa', 'bb', 'cc', 'dd', 'ee']
print(l.index('bb'))
# 1
l = ['aa', 'bb', 'cc', 'aa', 'dd', 'ee']
# 開始位置を指定して探索することができる
print(l.index('aa', 2))
# 3
要素のカウント
特定の要素をカウントする
countメソッド
で指定した要素がリストにいくつ含まれているかをカウントすることができます。
l = ['aa', 'bb', 'cc', 'aa', 'dd', 'ee']
print(l.count('aa'))
# 2
リストの長さを取得する
len関数
でリストの長さを取得することができます。
l = ['aa', 'bb', 'cc', 'aa', 'dd', 'ee']
print(len(l))
# 6
要素の整列
sortメソッドで要素を整列する
sortメソッド
でリストの要素を整列することができます。
l1 = ['dd', 'bb', 'ee', 'aa', 'cc']
l1.sort()
print(l1)
# ['aa', 'bb', 'cc', 'dd', 'ee']
l2 = [8, 6, 9, 3, 4, 1]
l2.sort()
print(l2)
# [1, 3, 4, 6, 8, 9]
2重リストで要素を整列する
2重リストの特定要素の並び替えはlamdba関数を使用します。
l = [
['dd', 2],
['bb', 3],
['ee', 1],
['aa', 5],
['cc', 4]
]
l.sort(key = lambda x:x[1])
print(l)
# [['ee', 1], ['dd', 2], ['bb', 3], ['cc', 4], ['aa', 5]]
要素の順序を反転する
reverseメソッド
で要素の順序を反転することができます。
l = [5, 4, 3, 2, 1]
l.reverse()
print(l)
# [1, 2, 3, 4, 5]
リストの複製
copy関数
を使用することで、リストなどのデータを複製することができます。
l = [5, 4, 3, [2, 1]]
import copy
l2 = copy.copy(l)
print(l2)
# [5, 4, 3, [2, 1]]
l2[0] = 6
l2[3][0] = 10
print(l2)
# [6, 4, 3, [10, 1]]
print(l)
# *要素のリストは複製されないため、複製先を編集すると複製元も編集される
# l2[0] = 6 は編集されていないが、l2[3][0] = 10は編集されている
# [5, 4, 3, [10, 1]]