Python タプル 使い方 スクリプトの書き方

バイオインフォ道場、くまぞうです。

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

スポンサーリンク



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
スポンサーリンク




ランキング


おすすめ記事

ピックアップ記事

  1. tidyverse – distinct関数でデータフレームの重複行を削除 dplyrパッケージ

    tidyverseでデータフレームの重複行の削除を行う場合、dplyrパッケージのdistinct…
  2. R subset関数 データフレームやmatrixからの条件指定による行・列の抽出

    R の subset関数は、データフレームやマトリックスから条件にマッチした部分集合を取り出します…

人気記事

  1. R データ型 - 文字列・ベクター・データフレーム・マトリックス など-, R言語, スクリプト

    R subset関数 データフレームやmatrixからの条件指定による行・列の抽出
    R の subset関数は、データフレームやマトリックスか…
  2. Excel, その他, 統計

    z-score 計算方法 エクセル(Excel) 編
    統計処理で、大きく変化しているなどの判断基準にも使われる値…
  3. IGV, 解析ツール

    IGV 使い方 インストール〜便利な使い方まで | リファレンス・マッピングデータ・アノテーションを読み込んで表示しよう
    IGV(Integrative Genomics View…

おすすめ記事

  1. awk, bash 文字列操作, シェルスクリプト

    bash 部分文字列・置換・長さ・連結・分割の文字列処理
    bashのよく使う文字列処理、部分文字列・置換・連結・長さ…
  2. bash 応用, シェルスクリプト

    シェル スクリプト ファイル存在チェック・空のファイルチェック
    bashでスクリプトを作成するときに、よく使うのがファイル…
  3. R言語, グラフ

    R 使い方 軸・ラベルの調整(向き・サイズ・色など) グラフの描き方
    Rによるplot(グラフ)の描画は、手軽で大変便利です。た…