Python

【Python】シーケンスとは?特徴と使い方を解説

この記事では、Pythonのシーケンス(sequence)について解説します。シーケンスとは、文字列やリストのような順番を持った複数の要素をまとめて扱える型のことを言います。シーケンス特有の演算も定義されているので、確認していきましょう❗️

シーケンスとは?

シーケンスとは、リストなどのように複数のデータを扱える型のことを言いますが、特徴的なのが格納された要素が順番を持つことです。要素が順番を持つことによって前から2番目の要素を取得できたり、後ろから3番目の要素を取得できたりします。

Pythonでは、以下のようなシーケンス型が用意されています。

シーケンス型の要素には、インデックス(添字)と呼ばれる番号が割り振られます。

例えば、下のようなリストでは、

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

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

インデックスは、先頭の要素から0, 1, 2…と順番に割り振られます。マイナスの値も割り振られ、末尾の要素から-1, -2, -3…と順番に割り振られます。

シーケンスは名前の後ろに[インデックス]を付けることで、指定したインデックスの要素を取得することができます。

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

# 先頭の要素
print(f'l[0]: {l[0]}')

# 先頭から2番目の要素
print(f'l[1]: {l[1]}')

# 末尾の要素
print(f'l[-1]: {l[-1]}')

# 末尾から2番目の要素
print(f'l[-2]: {l[-2]}')

実行結果

l[0]: a
l[1]: b
l[-1]: j
l[-2]: i

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

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

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

ミュータブルとは、変更可能なオブジェクトのことを言います。同じオブジェクトのまま値だけを変更することができます。

ミュータブルなシーケンス型には、list(リスト)型があります。

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

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

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

  • タプル(tuple)
  • レンジ(range)
  • セット(set)
  • 文字列(str)
【Python】ミュータブルとイミュータブルこの記事では、Pythonのミュータブル(mutable)とイミュータブル(immutable)について解説します。 ミュータブルとイ...

共通のシーケンス演算

ミュータブル、またはイミュータブルなシーケンス型で、共通している演算は以下のようなものがあります。

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

シーケンス[インデックス]で要素にアクセスできます。

l = [1, 2, 3, 4]

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

実行結果

2
3

要素数が変更された場合は、もちろんインデックスも変わります。

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

print(l[2])

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

実行結果

c
d

スライス

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

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

print(l[1:4])

実行結果

[2, 3, 4]
【Python】シーケンスの任意の範囲の要素を取得するスライスの使い方この記事では、Pythonのスライスの使い方を解説します。スライスは、シーケンスオブジェクトの要素を範囲で選択できます。選択した要素は、...

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

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

l = [1, 2, 3]

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

実行結果

True
False

長さの取得

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

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

print(len(l))

実行結果

5

min・max

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

l = [3, 7, 1, 8, 4]

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

実行結果

1
8

文字列にも使用可能です。

s = 'Hello'

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

実行結果

H
o

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

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

実行結果

72
101
108
111

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

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

s = 'abcd'

# 'c'のインデックスを取得
print(s.index('c'))

実行結果

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

要素の出現回数

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

s = 'Hello'

# 「l」の個数を取得
print(s.count('l'))

実行結果

2

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

イミュータブルなシーケンス型では、hash()関数が使えます。hash()関数は、オブジェクトのハッシュ値を返します。

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

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

実行結果

817977498342679304
529344067295497451

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

【Python】辞書の使い方【dict】この記事では、Pythonの辞書の使い方を解説します。辞書はマップとも呼ばれ、keyとvalueの2つの値を用いて扱われます。では、辞書...

ミュータブルなシーケンス演算

ミュータブルなシーケンス型では、以下のような演算が可能です。

要素の変更

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

l = [1, 2, 3]

l[1] = 'a'
print(l)

実行結果

[1, 'a', 3]

要素の追加

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

l = [1, 2, 3]

l.append(4)
print(l)

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

実行結果

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

全ての要素の削除

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

l = [1, 2, 3]

l.clear()
print(l)

実行結果

[]

シーケンスの拡張

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

l = [1, 2, 3]

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

# extendメソッドは「+=」と同等
l += {11, 12, 13}
print(l)

実行結果

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

繰り返し更新

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

l = [1, 2, 3]

l *= 3
print(l)

実行結果

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

要素の挿入

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

l = [1, 2, 3]

l.insert(2, 'a')
print(l)

実行結果

[1, 2, 'a', 3]

要素を取り出す

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

l = [1, 2, 3]

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

実行結果

[1, 3]
2

要素の削除

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

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

l.remove(2)
print(l)

実行結果

[1, 3, 1, 2]

逆順にする

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

l = [1, 2, 3]

l.reverse()
print(l)

実行結果

[3, 2, 1]

まとめ

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

シーケンス型は、リストや文字列などの順番を持った複数のデータを扱う型のことを言います。とてもよく使う型ばかりなので覚えておきましょう!

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

最短3か月でエンジニア転職『DMM WEBCAMP COMMIT』