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

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

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