バイオインフォ道場、くまぞうです。
タプルは、リストによく似た構造のデータです。複数のデータを管理するのに便利で、操作もリストに似ています。異なるのは、データの書き換えが出来ないという点です。タプルを使うための簡単な操作を確認します。インタラクティブシェル(>>>)を使うと確認しやすいです。>
スポンサーリンク
Python タプル
Pythonのタプルは、先頭を0番として並べられた複数のデータです。基本的に先頭から順番にオブジェクトを格納します。オブジェクトを入れた場所をインデックスで順番に管理できます。タプルにはリスト同様、いろんな種類のオブジェクトを入れることができます(数値・文字列・リストなど)。大きさは自動で調整されます。データの変更はできません(追加、変更、削除などはできません)。
Python タプルの使い方
基本的な操作
タプルの定義
Pythonのタプルは括弧(())で囲みます。タプル内のデータ(要素)はカンマ(,)で区切ります。リストから動的生成も可能です。
>>> aaa = (1, 2, 3, 4, 5)
(1, 2, 3, 4, 5)
>>> bbb = ['A', 'B', 'C']
['A', 'B', 'C']
>>> ccc = tuple(bbb)
('A', 'B', 'C')
インデックスによるデータへのアクセス
タプルの要素にアクセスするには、インデックスを指定します。0から順番に番号が振られます。最後から数える場合は、-1, -2…と数えます。
>>> aaa = (1, 2, 3, 4, 5) >>> aaa (1, 2, 3, 4, 5) >>> aaa[0] 1 >>> aaa[-1] 5
タプルから複数のデータを取り出す場合、コロンを使って範囲を指定します。開始位置・終了位置(含まず)で指定します。省略も可能です。
>>> aaa = (1, 2, 3, 4, 5) >>> aaa[1:3] (2, 3) >>> aaa[1:] (2, 3, 4, 5) >>> aaa[:4] (1, 2, 3, 4)
データの追加・変更・削除(不可)
タプルのデータ更新はできません。但し、リスト同様、タプル同士を連結して新しいタプルを作ることはできます。スライスなどの操作結果も同様。
>>> aaa = (1, 2, 3, 4, 5) (1, 2, 3, 4, 5) >>> aaa + (10,) (1, 2, 3, 4, 5, 10) >>> aaa + (10, 20, 30) (1, 2, 3, 4, 5, 10, 20, 30) >>> aaa (1, 2, 3, 4, 5) >>> bbb = aaa + (10, 20, 30) # 新しいタプルとして >>> bbb (1, 2, 3, 4, 5, 10, 20, 30)
最大・最小などのユーティリティ
タプルから最大の要素を得るにはmax関数を使います。最小はmin関数です。
>>> aaa = (1, 2, 3, 4, 5) >>> max(aaa) 5 >>> min(aaa) 1
サンプル
タプルを使った、Pythonのスクリプト例です。fastaファイルを読みこんで、出現順とヘッダーのタプルとヘッダー情報を辞書に格納します。最後に出現番号をキーにしてデータ(ヘッダー情報のみ)を取り出します。
tuple_test.py
#! /usr/local/bin/python
# -*- coding: utf-8 -*-
file_name = "my.fasta"
count = 0
map = {}
f = open(file_name, "r")
for line in f.readlines():
if line[0] == '>':
map[tuple([count, "HEADER"])] = line.strip() # 出現順をタプルで管理
count += 1
f.close()
for x in range(0, len(map)):
print map[(x, "HEADER")][1:] # 出現順のタプルでデータ呼出し
my.fasta
>cds1 ATGGTGGGTGGCAAGAAGAAAACCAAGATATGTGACAAAGTGTCACATGA TTTGGCAATCGGTTCCTGGATTGGACTTAGACCCCTACGCATCCTCAAAT GAAATGTTGCCAACGCTTCTTGAGAGCTGCCCAAAACTTGAATCTCTCAT >cds2 ATGGTTCAATATAATTTCAAGAGGATCACAGTTGTTCCCAATGGGAAGGA GCACGTCGTGGTGAAGCTGACAGAGTTATACCAACGCTTAGACCGAAACA AACCGACAGGCGTTGA >cds3 ATGACTCGTTTGTTGCCTTACAAAGGTGGAGATTTTTTGGGACCGGATTT CCGAGGTATACCTCTACCTTATCTTTCTGAATTAACTGTGAGCTTCATAG GCAAAAATTAAGATTGGTGAATGCTCAAAACGTAAAAAGGATAAGCAAGT >cds4 ATGGATTCAGAGTCAGAGTCAAAGCTCATATCATTCATTTCTCAATTAGT ATCATGCATGATACAAACAATCTCTCTGGTCAGCTCAATGGATTTGAAGT ATCTATTTCGGTAACTTCTTCTCATGTATGCAATGTGATTATATTCTCCA >cds5 ATGTCGGTTCCTCCTAGATTCCGGTCCGTAAATTCCGATGAGCGAGAGTT GCTGCAGAGGAAACCACCGGGGATGAAACTGGAGAAGCCGATGATGGAGA GAGAGAGAGTGATAAATAA
実行と結果
$ ls my.fasta tuple_test.py $ python tuple_test.py cds1 cds2 cds3 cds4 cds5
スポンサーリンク
![バイオインフォ 道場 [bioinfo-Dojo]](https://bioinfo-dojo.net/wp-content/uploads/2016/03/some_object_luca-bravo-alS7ewQ41M8-unsplash.jpg)

