『Python数値計算ノート』ではアフィリエイトプログラムを利用して商品を紹介しています。

シーケンス

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 を自動的に開始する」のチェックマークを外しておきました。これで自動起動を解除できました。