[Python中級講座]リストの操作方法

以下ではリストの使い方を解説します。

リストのインデックス

リストのインデックスとは要素が格納されている場所を示します。

リストのインデックスは0から始まります。

インデックスをマイナスにするとリストの末尾からカウントできます。
末尾から順に-1,-2,-3,…と数えます。

リストの生成

値を指定する場合

リストの生成方法は以下の通りです。

ls = [値1,値2,値3,…] #要素数は自分で決めて入力できる。

PythonのリストはC言語などの配列とは違い、宣言時に要素数を指定する必要がありません。

記述例は以下の通りです。

ls = ["伊藤", 170, 20.5]

中身を空にする場合

空のリスト生成は以下の通りです。

ls = []

同じ要素を入れる場合

要素がすべて同じリストの生成は以下の通りです。

ls = [入れたい数値] * 入れる個数

記述例は以下の通りです。

ls = [0] * 5    #出力: [0,0,0,0,0]

連続した数値を入れる場合

連続した数値を要素とするリストの生成は以下の通りです。

ls = list(range(開始値,終了値,ステップ))

range()関数で数値を生成し、list()関数でlist型に変換しています。

range()関数は開始値から「終了値 – 1」までの数値を生成します。
また、開始値とステップは省略することが可能です。
省略すると、0から「終了値 – 1」まで順番に生成します。

記述例は以下の通りです。

ls = list(range(1,5,1))    #1から4まで順番に数値を入れる。
print(ls)                  #出力:[1, 2, 3, 4]


ls = list(range(1,5,2))    #1から4まで一個飛ばしで数値を入れる。
print(ls)                  #出力:[1, 3]


ls = list(range(5))        #0から4までの数値を入れる。
print(ls)                  #出力:[0, 1, 2, 3, 4]

リストの連結

リスト同士を連結させて一つのリストを作ることができます。

新しいリスト = 結合させたいリスト1 + 結合させたいリスト2

記述例は以下の通りです。

ls_1 = ["apple"]
ls_2 = ["banana"]

ls_3 = ls_1 + ls_2  #リスト = リスト + リスト
print(ls_3)           #出力例:['apple', 'banana']

ls_1 += ls_2          #リスト += リスト
print(ls_1)           #出力例:['apple', 'banana']

要素の変更

すでに存在しているリストの要素を変更することができます。

リスト名[インデックス番号] = 新しく入れる値

記述例は以下の通りです。

ls = ["a","b","c","d"]

ls[0] = "A"
print(ls)             #['A', 'b', 'c', 'd']

要素の追加

すでに存在しているリストに対して新しく要素を追加することができます。

リストの末尾に要素を追加する

リストの末尾に要素を追加する場合はappend()メソッドを使用します。

リスト名.append(追加する値)

記述例は以下の通りです。

ls = ["a","b","c","d"]

ls.append("e")
print(ls)              #出力例:['a', 'b', 'c', 'd', 'e']

好きな場所に要素を追加する

リストの好きな場所に要素を追加する場合はinsert()メソッドを使用します。
引数には「値を入れたい場所のインデックス番号」と「追加する値」を記述します。

リスト名.insert(インデックス番号,追加する値)

記述例は以下の通りです。

ls = ["a","b","c","d"]

ls.insert(1,"ABC")
print(ls)       #出力例:['a', 'ABC', 'b', 'c', 'd']

要素の削除

すでに存在しているリストに対して要素を削除することができます。

要素を削除する

指定した位置の要素を削除する場合はdel文を使います。

del リスト名[インデックス番号1],リスト名[インデックス番号2],…

del文はリストだけでなく、変数やオブジェクトの削除にも使用可能です。

記述例は以下の通りです。

ls = ["a","b","c","d"]
del ls[0],ls[1]       #一つ目の要素と二つ目の要素を削除する。
print(ls)             #出力例:['b', 'd']

要素を取り出す

指定した位置の要素を取り出す場合はpop()メソッドを使います。
pop()関数では取り出した要素を変数に代入できます。

変数 = リスト名.pop()

記述例は以下の通りです。

ls = ["a","b","c","d"]
a = ls.pop(0)
print(ls)             #出力例:['b', 'c', 'd']
print(a)              #出力例:a

リストの一部を指定する (スライス)

リストの一部を指定する場合はスライスを使用します。
前述した方法と組み合わせて、リストの生成、要素の変更削除などができます。

スライスで新しいリストを生成する

スライスを用いるとリストの一部を複製した新しいリストを生成することができます。

以下の方法では「開始インデックス番号」の要素から「終了インデックス番号 – 1」の要素を持つリストを生成できます。

新しいリスト = 取り出されるリスト名[開始インデックス番号:終了インデックス番号]

開始インデックス番号と終了インデックス番号のどちらかは省略することができます。

新しいリスト = リスト名[開始インデックス番号:]
新しいリスト = リスト名[:終了インデックス番号]

記述例は以下の通りです。

ls = ["a","b","c","d"]

ls_new = ls[1:3]
print(ls_new)         #出力例:['b', 'c']

ls_new = ls[2:]       #終了インデックス番号の省略
print(ls_new)         #出力例:['c', 'd']

ls_new = ls[:3]       #開始インデックス番号の省略
print(ls_new)         #出力例:['a', 'b', 'c']

スライスでまとめて要素を変更する

スライスを用いるとリストの要素をまとめて変更することができます。

リスト名[開始インデックス番号:終了インデックス番号] = [“変更する値1″,”変更する値2”,…]

記述例は以下の通りです。

ls = ["a","b","c","d"]

ls[1:3] = ["B","C"]
print(ls)             #出力例:['a', 'B', 'C', 'd']

リストの要素をまとめて削除する

スライスを用いるとリストの要素をまとめて削除することができます。

先ほど紹介したdel文とスライスを組み合わせてみましょう。

del リスト名[開始インデックス番号:終了インデックス番号]

記述例は以下の通りです。

ls = ["a","b","c","d"]

del ls[1:3]
print(ls)        #出力例:['a', 'd']

リストに関する便利なメソッド

リストには他にも便利なメソッドが用意されています。

よく使う関数を以下にまとめます。

  • len()
  • count()
  • sort()

リストの長さを取得する

リストの長さ(要素数)を取得するにはlen()を使用します。

len(リスト名)

記述例は以下の通りです。

ls = ["a","b","c","d"] #要素数4のリスト

length = len(ls)
print(length)          #出力例:4

リスト内の要素の出現回数を数える

リスト内の要素の出現回数を数えるにはcount()を使用します。

リスト名.count(数えたい値)

記述例は以下の通りです。

ls = ["a","b","c","d","a","a","b"]   #リスト内にaは3個ある。

x = ls.count(a)
print(x)                             #出力例:3

リスト内の要素を並べ替える

リスト内の要素を並べ替える場合はsort()を使用します。

引数に「reverse=True」を記述すると降順になります。

リスト名.sort()        #昇順ソート

リスト名.sort(reverse=True) #降順ソート

記述例は以下の通りです。

ls = [2,4,3,5,1,6]

ls.sort()
print(ls)           #出力例:[1, 2, 3, 4, 5, 6]

ls.sort(reverse=True)
print(ls)           #出力例:[6, 5, 4, 3, 2, 1]

まとめ

今回はリストの生成方法について確認しました。

量が多いのですべて覚えようとはせず、必要に合わせて確認していきましょう。