シーケンス

当サイトではアフィリエイトプログラムを利用して商品を紹介しています。

Pythonのシーケンス

Pythonのシーケンス(sequence)とは「要素と、要素の並ぶ順序が記憶されているデータ型」のことです。たとえば、リストはシーケンスなので、 [1, 2] と [2, 1] は異なるデータです。

[1, 2] == [2, 1]
# False

セットはシーケンスではないので、{1, 2} と {2, 1} は同じデータであると判断されます。

{1, 2} == {2, 1}
# True

list, tuple, range は Python の基本的なシーケンスです。
str, bytes, bytearray は特殊なシーケンスに分類されます。
この記事では、list, tuple, range およびテキストシーケンス str を扱います。
 
シーケンス に分類されるオブジェクトは、いくつかの共通する演算機能、関数、メソッドを備えています。以下、s, t は互いに同じ型のシーケンス、x は任意のオブジェクト、n, i, j は整数とします。

インデクスによる抽出

s[i] は先頭から i+1 番目の要素を抽出します。
list, tuple, range, str に共通する演算機能です。

# PYTHON_SEQUENCE

# In[1]

# シーケンスを生成
my_list = [1, 2, 3, 4, 5]
my_tuple = (1, 2, 3, 4, 5)
my_range = range(1, 6)
my_str = "12345"

# s[1]は2番目の要素を抜き出す
print(my_list[1])
print(my_tuple[1])
print(my_range[1])
print(my_str[1])

# 2
# 2
# 2
# 2

スライス

s[i:j] は i+1 番目から j 番目までの要素をスライスします。 s[i:j:k] は k 毎のスライスです。list, tuple, range, str に備わる演算機能です。

# In[2]

# s[1:4]は2番目から4番目の要素を抜き出す
print(my_list[1:4])
print(my_tuple[1:4])
print(my_range[1:4])
print(my_str[1:4])

# [2, 3, 4]
# (2, 3, 4)
# range(2, 5)
# 234

x in s

x in s はシーケンス s にオブジェクト x が含まれていれば True, 含まれていなければ False を返します。list, tuple, range, str にサポートされる演算です。

# In[3]

print("my_list に 3 は含まれる? {}".format(3 in my_list))
print("my_tuple に 3 は含まれる? {}".format(3 in my_tuple))
print("my_range に 6 は含まれる? {}" .format(6 in my_range))
print("my_str に 6 は含まれる? {}".format("6" in my_str))

# my_list に 3 は含まれる? True
# my_tuple に 3 は含まれる? True
# my_range に 6 は含まれる? False
# my_str に 6 は含まれる? False

x not in s

x not in s はシーケンス s にオブジェクト x が含まれていなければ True, 含まれていれば False を返します。すなわち、x in s を反転させたブール値が返ります。list, tuple, range, str にサポートされています。

# In[4]

print("my_list に 3 は含まれない? {}".format(3 not in my_list))
print("my_tuple に 3 は含まれない? {}".format(3 not in my_tuple))
print("my_range に 6 は含まれない? {}" .format(6 not in my_range))
print("my_str に 6 は含まれない? {}".format("6" not in my_str))

# my_list に 3 は含まれない? False
# my_tuple に 3 は含まれない? False
# my_range に 6 は含まれない? True
# my_str に 6 は含まれない? True

s+t

連結演算 s + t は list, tuple, str にサポートされています。

# In[5]

print(my_list + my_list)
print(my_tuple + my_tuple)
print(my_str + my_str)

# [1, 2, 3, 4, 5, 1, 2, 3, 4, 5]
# (1, 2, 3, 4, 5, 1, 2, 3, 4, 5)
# 1234512345

s*n, n*s

シーケンス s と整数 n の積 s*n (あるいは n*s) は s を n 個連結することを意味します。list, tuple, str で使用できますが、range にはサポートされていません。

# In[6]

print(3 * my_list)
print(3 * my_tuple)
print(3 * my_str)

# [1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5]
# (1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5)
# 123451234512345

s.index()

s.index(x) はシーケンス s の中で要素 x が最初に出現するインデックスを返します。x が存在しない場合は ValueError を送出します。list, tuple, range, str に備えられたメソッドです。

# In[7]

# シーケンスに含まれる4のインデックスを取得
print(my_list.index(4))
print(my_tuple.index(4))
print(my_range.index(4))
print(my_str.index("4"))

# 3
# 3
# 3
# 3

s.count()

s.count(x) はシーケンス s の中にオブジェクト x が出現する回数を返します。

# In[8]

# シーケンスを生成
my_list_2 = ["a", "b", "b", "b", "c", "c"]
my_tuple_2 = ("a", "b", "b", "b", "c", "c")
my_str_2 = "abbbcc"

# シーケンスの中に含まれる"b"をカウント
print(my_list_2.count("b"))
print(my_tuple_2.count("b"))
print(my_str_2.count("b"))

# 3
# 3
# 3

この他に、組み込み関数 max(), min(), len() は list, tuple, range, str のいずれも引数に受け取ることができます。詳細については個別の記事を参照してください。

コメント

  1. あとりえこばと より:

    【プログラミング日記】
    PC を起ち上げると、OneDrive が自動起動していました。タスクマネージャで確認すると、OndeDrive が 8000 KB ほどのメモリを使用していることがわかって、ちょっとイライラしました。許可もなく勝手に人の大切なメモリを使わないでほしいです。タスクバーのところにある、OneDrive の アイコンをぽちっと右クリックして、[設定] を押し、「Windows にサインインしたときに OneDrive を自動的に開始する」のチェックマークを外しておきました。これで自動起動を解除できました。