バイオインフォ道場、くまぞうです。
Pythonで複数のデータを順番に管理するには、リストを使うと便利です。リストを使うための簡単な操作を確認します。インタラクティブシェル(>>>)を使うと確認しやすいです。
Python リスト
Pythonのリストは、先頭を0番として並べられた複数の箱のようなものです。先頭から順番にオブジェクトを入れても良いし、インデックスで指定した位置に入れても良いです。オブジェクトを入れた場所をインデックスで順番に管理できます。リストにはいろんな種類のオブジェクトを入れることができます(数値・文字列・リストなど)。リストの大きさは自動で調整されます。他のプログラミング言語の配列のような構造です。
Python リストの使い方
基本的な操作
リストの定義
Pythonのリストはカギカッコ([]
)で囲みます。リスト内のデータはカンマ
(,)で区切ります。1つ1つのデータは要素と呼ばれます。
>>> aaa = [1, 2, 3, 4, 5]
インデックスによるデータへのアクセス
リストの要素にアクセスするには、リストのインデックスを指定します。0から順番に番号が振られます。最後から数える場合は、-1, -2…と数えます。
>>> aaa = [1, 2, 3, 4, 5] >>> aaa[0] 1 >>> aaa[4] 5 >>> 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]
データの追加
リストの連結は+
を使います。append関数
を使うこともあります。
>>> aaa = [1, 2, 3, 4, 5] >>> aaa + [10, 20, 30] [1, 2, 3, 4, 5, 10, 20, 30]
>>> aaa = [1, 2, 3, 4, 5] >>> aaa.append(10) >>> aaa [1, 2, 3, 4, 5, 10] >>> aaa = [1, 2, 3, 4, 5] >>> aaa.append([10, 20, 30]) >>> aaa [1, 2, 3, 4, 5, [10, 20, 30]]
データの変更
リストのデータの変更は、インデックスを指定して新しいデータをセットします。
>>> aaa = [1, 2, 3, 4, 5] >>> aaa[2] = 10 >>> aaa [1, 2, 10, 4, 5]
データの削除
リストのデータの削除は、del関数
でインデックスを指定します。削除後のデータの順番は更新されます。
>>> aaa = [1, 2, 3, 4, 5] >>> del aaa[0] >>> aaa [2, 3, 4, 5]
便利な操作
ソート・反転
リストのソートはsort関数
を使います。反転はreverse関数
です。
>>> aaa = [1, 2, 3, 4, 5] >>> aaa.reverse() >>> aaa [5, 4, 3, 2, 1] >>> aaa [5, 4, 3, 2, 1] >>> aaa.sort() >>> aaa [1, 2, 3, 4, 5]
最大・最小
リストから最大の要素を得るにはmax関数
を使います。最小はmin関数
です。
>>> aaa [1, 2, 3, 4, 5] >>> max(aaa) 5 >>> min(aaa) 1
サンプル
リストを使った、Pythonのスクリプト例です。fastaファイルを読みこんでヘッダー情報をリストに格納します。最後にリストの順番を反転して表示します。
list_test.py
#! /usr/local/bin/python # -*- coding: utf-8 -*- file_name = "my.fasta" all_header = [] f = open(file_name, "r") for line in f.readlines(): if line[0] == '>': all_header.append(line[1:].strip()) # listにセット f.close() print all_header # 正順で表示 all_header.reverse() # 反転処理 print all_header # 正順で表示
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 list_test.py $ python list_test.py ['cds1', 'cds2', 'cds3', 'cds4', 'cds5'] ['cds5', 'cds4', 'cds3', 'cds2', 'cds1']
[amazonjs asin=”479733665X” locale=”JP” title=”みんなのPython”]