バイオインフォ道場、くまぞうです。
タプルは、リストによく似た構造のデータです。複数のデータを管理するのに便利で、操作もリストに似ています。異なるのは、データの書き換えが出来ないという点です。タプルを使うための簡単な操作を確認します。インタラクティブシェル(>>>)を使うと確認しやすいです。>
スポンサーリンク
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
スポンサーリンク