2.11.1. 変数#

変数は、基本的に「値を入れる箱」です。Python では、変数の型を指定する必要はなく、整数、浮動小数点数、文字列、リスト、辞書など、好きな型の値を代入できます。値の代入もシンプルで、= を使うだけです。Perl のように $@% といった呪文を唱える必要はありません。記号を覚えるより、研究を進めましょう。

a = 1
p = 3.14
dna = "ACGAGCTTATATAGTCTAC"
rna = ""

l1 = ["A", "B", "C", "D", "E"]
l2 = [1, 2, 3, 4, 5]

dna2aa = {"ATC": "I", "CCA": "P", "GTA": "V"}

2.11.1.1. リスト#

2.11.1.1.1. リストの基本操作#

複数の値をまとめて扱うには、Python ではリストと呼ばれる変数型を利用します。リストの宣言は通常の変数と同じように行いますが、値を [] で囲み、カンマで区切って並べてから代入します。

a = ["A", "B", "C", "D", "E"]
b = [1, 2, 3, 4, 5]

リストから値を取り出すには、インデックスを使います。Python のインデックスは 0 から始まることに注意してください。例えば、リスト a から 3 番目の要素を取り出すには a[2] と書きます。

print(a[2])
## C

リストの要素を順に取り出して処理を行うには、for 文を使います。

arr = ["A", "C", "D", "B"]

for i in range(len(arr)):
    print(arr[i])
## A
## C
## D
## B

または、次のように直接要素を取り出すこともできます。これは他のプログラミング言語の foreach などに相当します。

for ele in arr:
    print(ele)
## A
## C
## D
## B

2.11.1.1.2. リスト要素の並べ替え#

リストの値を並べ替えるには、sorted() 関数を使用します。デフォルトでは昇順に並べ替えられますが、reverse=True を指定すると降順に並べ替えることもできます。

arr = ["A", "C", "D", "B"]

for ele in sorted(arr):
    print(ele)
## A
## B
## C
## D

for ele in sorted(arr, reverse=True):
    print(ele)
## D
## C
## B
## A

2.11.1.1.3. 要素の追加・削除#

要素の追加は、append()insert()pop() メソッドを使用します。append() はリストの末尾に要素を追加し、insert() は指定したインデックスに要素を挿入します。

arr = ["A", "B", "C", "D", "E"]

arr.insert(0, "0")
arr
## ["0", "A", "B", "C", "D", "E"]


arr.append("Z")
arr
## ["0", "A", "B", "C", "D", "E", "Z"]

要素の削除は、pop() メソッドを使用します。pop() はリストの末尾の要素を削除して返しますが、引数にインデックスを指定すると、その位置の要素を削除して返します。

arr = ["A", "B", "C", "D", "E"]

a = arr.pop(1)
b = arr.pop()
arr
## ["A", "C", "D"]

2.11.1.2. 辞書(ディクショナリ)#

辞書(ディクショナリ)は、キーと値のペアでデータを管理するデータ構造です。例えば、広辞苑のようにキーを単語、値を解説文としてデータを管理したり、コドンをキー、対応するアミノ酸を値とした対応表を作成したりすることができます。このように、キーを用いて値を直接参照できる点が辞書の大きな特徴です。

dna2aa = {"ATC": "I", "CCA": "P", "GTA": "V"}
print(dna2aa["CCA"])
## P

辞書はキーを使ってデータを管理するため、要素には決まった順序がありません。そのため、要素を常に同じ順序で取り出したい場合は、キーを並べ替えるなどの工夫が必要になります。次の例では、キーを sorted 関数で並べ替えてから辞書の要素を順に取り出す方法を示します。

for k in sorted(dna2aa.keys()):
    print(f"key: {k}, value: {dna2aa[k]}")

keys() メソッドの代わりに items() メソッドを使うと、キーと値のペアを同時に取得できます。このとき、その値を利用して並べ替えることも可能です。

for k, v in sorted(dna2aa.items(), key=lambda item: item[1]):
    print(f"key: {k}, value: {v}")

既存の辞書に要素を追加したり、更新しありする場合は、次のようにします。

dna2aa["AUG"] = "M"
dna2aa["CCA"] = "Q"

辞書の要素を削除するには、del 文を使用します。

del dna2aa["ATC"]