【Python】シーケンス型とは?【シーケンス型の使い方】

Python

この記事では、Pythonのシーケンス型について解説します。

シーケンス型とは?

シーケンス型とは、順番を持った複数のデータを扱う型のことを言います。Pythonでは以下のようなシーケンス型が用意されています。

  • リスト(list)
  • タプル(tuple)
  • レンジ(range)
  • 文字列(str)

インデックス(添字)

シーケンス型の要素には、インデックス(添字)と呼ばれる番号が割り振られます。
例えば、下のようなリストでは、

l = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']

以下のようにインデックスが割り振られます。

インデックスは、0から割り振られます。また、マイナスの値も割り振られていて、末尾から要素を取得したい際に便利です。

シーケンス型のできること

シーケンス型は、以下のようなことができます。

インデックスで要素にアクセス

インデックスを使って要素にアクセスできます。以下のように指定します。

シーケンス型[インデックス]

サンプル

以下のコードでは、インデックスを用いて要素を取得しています。

l = ['a', 'b', 'c', 'd']

print(l[1])
print(l[-2])

実行結果

b
c
POINT

インデックスは、その要素が何番目の要素かで決まります。

l = ['a', 'b', 'c', 'd']
print(l[2])

# 先頭の要素を取り出す
l.pop(0)
print(l[2])

実行結果

c
d

スライス

スライスを使うことで、シーケンス型の要素をインデックスで範囲指定して取得することができます。スライスは以下のように指定します。

シーケンス型[開始:終了:ステップ]

サンプル

以下のコードでは、1 <= N < 4の範囲の要素を取得しています。 

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

print(l[1:4])

実行結果

[2, 3, 4]

詳しくは以下の記事を参考にしてください。

【Python】要素を範囲指定して取得する【スライス】【Python】要素を範囲指定して取得する【スライス】

任意の要素が格納されているかどうか

in演算子を使うことで、シーケンス内に任意の要素が格納されているか調べることができます。要素が格納されていればTrue、なければFalseが返されます。

任意の要素 in シーケンス

notを付けることで、評価を逆転させることができます。つまり、任意の要素が格納されていなければTrue、あればFalseが返されます。

任意の要素 not in シーケンス

サンプル

以下のコードでは、リスト内に特定の要素が格納されているか調べています。

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

print(3 in l)
print(6 in l)

print(3 not in l)
print(6 not in l)

実行結果

True
False
False
True

長さの取得

len関数で長さを取得できます。

len(シーケンス)

サンプル

以下のコードでは、リストの長さ(要素数)を出力しています。

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

print(len(l))

実行結果

5

min・max

min関数で最小値、max関数で最大値を取得できます。

min(シーケンス)
max(シーケンス)

サンプル

以下のコードでは、リストの最大値と最小値を出力しています。

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

print(min(l))
print(max(l))

実行結果

1
5

もちろん、文字列にも使用可能です。

s = 'Hello'

print(min(s))
print(max(s))

実行結果

H
o
POINT

文字は、文字コードで比較されます。

print(ord('H'))
print(ord('e'))
print(ord('l'))
print(ord('o'))

実行結果

72
101
108
111

要素のインデックスを調べる

シーケンス型のindexメソッドを使うことで、任意の要素のインデックスを調べることができます。

シーケンス.index(任意の要素)

サンプル

以下のコードでは、文字列中に含まれる「c」のインデックスを出力しています。

s = 'abcd'

print(s.index('c'))

実行結果

2

指定した要素がシーケンス内に複数格納されている場合は、最初に見つけた要素のインデックスのみを返します。

s = 'abcdabcd'

print(s.index('c'))

実行結果

2

要素の出現回数

シーケンス型のcountメソッドを使うことで、任意の要素がいくつ格納されているか調べることができます。

シーケンス.count(任意の要素)

サンプル

以下のコードでは、文字列中に「l」が何回使用されているかを出力しています。

s = 'Hello'

print(s.count('l'))

実行結果

2

イミュータブルとミュータブル

シーケンス型には、イミュータブルなものとミュータブルなものがあります。

イミュータブル(immutable)

変更不可能なオブジェクト。
同じオブジェクトのまま、値だけを変更することができません。変更するには新しいオブジェクトを作成する必要がある。

ミュータブル(mutable)

変更可能なオブジェクト。
同じオブジェクトのまま、値だけを変更することができます。

イミュータブルなシーケンス型

イミュータブルなシーケンス型には、タプルや文字列などがあります。こちらの型では、hash()が使えます。hash()は、オブジェクトのハッシュ値を返します。

s = 'Hello'
t = (1, 2, 3)

print(hash(s))
print(hash(t))

実行結果

6476563759824948484
2528502973977326415
POINT

hash()が使えることにより、辞書のキーとして使うことができます。

ミュータブルなシーケンス型

ミュータブルなシーケンス型には、リストなどがあります。こちらの型では、以下のようなことができます。

要素の変更

インデックスでアクセスした要素を変更することができます。

シーケンス[インデックス] = 値

サンプル

以下のコードでは、2番目の要素を書き換えています。

l = [1, 2, 3]

l[1] = 0
print(l)

実行結果

[1, 0, 3]

要素の追加

appendメソッドを使うことで、任意の要素をシーケンスの最後に追加できます。

シーケンス.append(任意の要素)

サンプル

以下のコードでは、リストに要素を追加しています。

l = [1, 2, 3]

l.append(4)
l.append('a')
print(l)

実行結果

[1, 2, 3, 4, 'a']

全ての要素の削除

clearメソッドを使うことで、シーケンスの要素を全て削除できます。

シーケンス.clear()

サンプル

以下のコードでは、リストの要素を全て削除しています。

l = [1, 2, 3]

l.clear()
print(l)

実行結果

[]

シーケンスの拡張

extendメソッドを使うことで、引数に指定されたイテラブルオブジェクトでシーケンスを拡張します。

シーケンス.extend(イテラブルオブジェクト)

また、+=を使っても同じように処理できます。

シーケンス += イテラブルオブジェクト

サンプル

以下のコードでは、リストを拡張しています。

l = [1, 2, 3]

l.extend(['a', 'b', 'c'])
print(l)

l += {11, 12, 13}
print(l)

実行結果

[1, 2, 3, 'a', 'b', 'c']
[1, 2, 3, 'a', 'b', 'c', 11, 12, 13]

繰り返し更新

*=演算子を使うことで、シーケンスの内容を繰り返したもので更新します。

シーケンス *= 整数

サンプル

以下のコードは、リストを2回繰り返し、その値で更新しています。

l = [1, 2, 3]

l *= 2
print(l)

実行結果

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

要素の挿入

insertメソッドを使うことで、位置を指定して要素を挿入できます。

シーケンス.insert(インデックス, 値)

サンプル

以下のコードでは、リストに要素を挿入しています。

l = [1, 2, 3]

l.insert(2, 0)
print(l)

実行結果

[1, 2, 0, 3]

要素を取り出す

popメソッドを使うことで、要素を取り出すことができます。

シーケンス.pop(インデックス)

サンプル

以下のコードでは、リストの要素を変数に取り出し、その変数とリストを出力しています。

l = [1, 2, 3]

num = l.pop(1)
print(l)
print(num)

実行結果

[1, 3]
2

要素の削除

removeメソッドを使うことで、任意の要素を削除することができます。シーケンス内に削除する要素が複数格納されている場合、最初に見つけた要素のみを削除します。

シーケンス.remove(値)

サンプル

以下のコードでは、リストの任意の要素を削除しています。

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

l.remove(2)
print(l)

実行結果

[1, 3, 1, 2]

逆順にする

reverseメソッドを使うことで、シーケンスに格納されている要素を逆順にすることができます。

シーケンス.reverse()

サンプル

以下のコードでは、リストを逆順にして出力しています。

l = [1, 2, 3]

l.reverse()
print(l)

実行結果

[3, 2, 1]

まとめ

この記事では、Pythonのシーケンス型について解説しました。シーケンス型は、リストや文字列などの順番を持った複数のデータを扱う型のことを言います。

とてもよく使う型ばかりなので、覚えておきましょう!

それでは今回の内容はここまでです!ではまたどこかで〜( ・∀・)ノ

タイトルとURLをコピーしました