複数個の値を保存するデータ型にはリスト、タプルと集合がある。リストは、データの追加や削除などの操作が行える。これに対し、タプルはデータの追加や削除が行えない。集合は数学の集合と同じ性質を持ち、同じ値のデータが複数個代入しても一つしか残らない。
リスト
リストの作成
リストには複数のデータを代入することができる。代入されたデータは 1、2、3、・・・のように添字が付けられる。
arr = ['ACCG', 'CAAT', 'GTAA', 'TTGG']
print(arr[0])
## 'ACCG'
print(arr[1])
## 'CAAT'
print(arr[-1])
## 'TTGG'
print(arr[1:3])
## ['CAAT', 'GTAA']
print(len(arr))
## 4
リスト要素の取得
リスト要素の取得
リストの要素を取得するには、基本的にリストのインデックスを指定して取得する。
arr = ['ACCG', 'CAAT', 'GTAA', 'TTGG', 'ATTA', 'AAAA']
print(arr[0])
## ACCG
複数の要素を同時に取得する場合は、開始位置と終了位置を指定する。
print(arr[2:4])
## ['GTAA', 'TTGG']
最初の 3 要素を取得する場合は、次のように終了位置を指定すれば良い。
print(arr[:3])
## ['ACCG', 'CAAT', 'GTAA']
print(arr[0:3])
## ['ACCG', 'CAAT', 'GTAA']
最後の 3 要素を取得する場合は、次のように開始位置を指定すれば良い。
print(arr[(len(arr) - 3):])
## ['TTGG', 'ATTA', 'AAAA']
リストの奇数番目の要素を取得する。この場合、最初の要素から 2 つ置きに要素を取得すれば良いので、次のようにする。
print(arr[::2])
## ['ACCG', 'GTAA', 'ATTA']
リストの偶数番目の要素を取得する。この場合、2 番目の要素から 2 つ置きに要素を取得すれば良いので、次のようにする。
print(arr[1::2])
## ['CAAT', 'TTGG', 'AAAA']
for 文を利用したリスト要素の取得
リストにあるすべての要素を取得するとき、for
文を利用する。for
文では、リストの各要素が直接取り出される。
arr = ['ACCG', 'CAAT', 'GTAA', 'TTGG']
for ele in arr:
print(ele)
## ACCG
## CAAT
## GTAA
## TTGG
インデックスを利用して要素を取り出したい場合は、次のようにする。
arr = ['ACCG', 'CAAT', 'GTAA', 'TTGG']
for i in range(0, len(arr)):
print(i)
print(arr[i])
## 0
## ACCG
## 1
## CAAT
## 2
## GTAA
## 3
## TTGG
リストの要素の追加
リストに要素を追加するとき、append
または extend
メソッドを利用します。他のプログラミング言語のように unshift
と push
も利用できる。
append |
リストの最後に、オブジェクトを追加する |
extend |
リストの最後に、オブジェクトを展開して追加する |
arr_1 = ['AAA', 'CCC']
arr_2 = ['GGG', 'TTT']
arr_1.append(arr_2)
print(arr_1)
## ['AAA', 'CCC', ['GGG', 'TTT']]
arr_1 = ['AAA', 'CCC']
arr_2 = ['GGG', 'TTT']
arr_1.extend(arr_2)
print(arr_1)
## ['AAA', 'CCC', 'GGG', 'TTT']
リストの要素の削除
リストの要素を削除するとき del
または remove
を利用する。リストの要素を削除して、削除した要素を受け取るには pop
を利用する。
del |
添字を利用してリストの要素を削除する |
remove |
要素の値を利用してリストの要素を削除する |
pop |
リストの先頭、後尾あるいは任意の位置から要素を削除し、それを取得する |
arr = ['A', 'C', 'G', 'T']
del arr[2]
print(arr)
## ['A', 'C', 'T']
arr = ['A', 'C', 'G', 'T']
arr.remove('C')
print(arr)
## ['A', 'G', 'T']
arr = ['A', 'C', 'G', 'T']
ele = arr.pop()
print(ele)
## 'T'
print(arr)
## ['A', 'C', 'G']
arr = ['A', 'C', 'G', 'T']
ele = arr.pop(0)
print(ele)
## 'A'
print(arr)
## ['C', 'G', 'T']
リスト要素の並べ替え
リスト要素の値を並べ替えるとき sorted
関数を利用する。
arr = ['A', 'U', 'C', 'G', 'T', 'A']
sorted_arr = sorted(arr)
print(sorted_arr)
## ['A', 'A', 'C', 'G', 'T', 'U']
reversed_arr = reversed(arr)
print(reversed_arr)
## ['U', 'T', 'G', 'C', 'A', 'A']
リストの順序を逆にするとき、リスト型の reverse
メソッドを利用する。
arr = ['A', 'U', 'C', 'G', 'T', 'A']
arr.reverse()
print(arr)
['A', 'T', 'G', 'C', 'U', 'A']
リスト要素の検索
リスト要素の値を検索するとき index
を利用する。指定した値がリスト中に何個含まれるかを数えるとき count
を利用する。
arr = ['A', 'C', 'G', 'T', 'A']
i = arr.index('A')
print(i)
## 0
i = arr.index('A', 2)
print(i)
## 4
i = arr.count('A')
print(i)
## 2
また、単純にある要素がリストに含まれているかどうかを調べるには in
演算子も使える。
arr = ['A', 'C', 'G', 'T', 'A']
if 'U' in arr:
print('U is in the list.')
else:
print('U is not in the list.')
## U is not in the list.
if 'U' not in arr:
print('U is not in the list.')
else:
print('U is in the list.')
## U is not in the list.
タプル
タプルはリストと似ている。ただし、リストは、作成した後に要素を追加したり、削除したりすることが可能であるのに対して、タプルは一度作成してしまうと、後から変更できない。
tp = ('A', 'C', 'G', 'T', 'A')
print(tp[1])
## 'C'
print(tp[2:4])
## ('G', 'T')
print(len(tp))
## 5
print(tp.index('G'))
## 2
print(tp.count('A'))
## 2
tp.appen('U')
## Traceback (most recent call last):
## File "test.py", line 4, in
## arr.append('U')
## AttributeError: 'tuple' object has no attribute 'append'
tp.pop()
## Traceback (most recent call last):
## File "test.py", line 6, in
## b = arr.pop()
## AttributeError: 'tuple' object has no attribute 'pop'
タプルとリストの交互変換は次のように行う。
li = ['A', 'C', 'G', 'T']
tuple(li)
## ('A', 'C', 'G', 'T')
tp = ('A', 'C', 'G', 'T')
list(li)
## ['A', 'C', 'G', 'T']
集合
Python の集合は、数学の集合に似てる。同じ値の要素が複数含まれると、一つに集約される。
se = {1, 2, 2, 3}
print(se)
## set([1, 2, 3])
print(len(se))
## 3
se.update({3, 4, 5})
print(se)
## set([1, 2, 3, 4, 5])
se.discard(3)
print(se)
## set([1, 2, 4, 5])
se.remove(2)
print(se)
## set([1, 4, 5])
se.remove(10)
## Traceback (most recent call last):
## File "test.py", line 21, in
## se.remove(10)
## KeyError: 10