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']

[amazonjs asin=”479733665X” locale=”JP” title=”みんなのPython”]

スポンサーリンク




ランキング


おすすめ記事

ピックアップ記事

  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(グラフ)の描画は、手軽で大変便利です。た…