[maya] python:リスト(1)

PythonWeb:リスト

リスト型は文字列と同じくシーケンス型の一つ。

組み込み型
  + 数値型
  |  + 整数
  |  + 長整数
  |  + 浮動小数点
  |  + 複素数
  + シーケンス型
  |  + 文字列
  |  + ユニコード文字列
  |  + リスト
  |  + タプル
  + マップ型
  |  + 辞書(ディクショナリ)
  + ファイルオブジェクト


リストは要素としてあらゆるオブジェクトを持つことが出来る。
括弧[]で囲んだ中にオブジェクトをカンマで区切って記述する。

list = [2012,2013,2014]
print(list)
#結果
#[2012, 2013, 2014]

リストの要素は異なるオブジェクトであっても可能で数値と文字列が混在しても大丈夫。

list = [u'山田', u'太郎', 1992, 12, 31, 'Men']
print(list)
#結果
#[u'\u5c71\u7530', u'\u592a\u90ce', 1992, 12, 31, 'Men']

文字列やリストなどのシーケンス型は、要素が順序を持って並べられている。
要素にはインデックスが割り当てられ、0から順に番号が割り当てられている。
またインデックスには負の値を指定することも可能で-1なら一番最後の要素となる。
これらの番号を使うことで要素を指定することが出来る。

list = [2012,2013,2014,2015]
print(list[0])
#結果
#2012
print(list[-1])
#結果
#2015

文字列と同じくスライスを使うことが出来る。

list = ['A', 'B', 'C', 'D', 'E']
print(list[1:2])       #二番目を選択
#結果
#['B']
print(list[1:-1])      #二番目から最後までを選択
#結果
#['B', 'C', 'D']
print(list[::2])       #インデックスの奇数を選択
#結果
#['A', 'C', 'E']

リストオブジェクトはミュータブルである。なので指定の要素を変更することが出来る。

list = ['A', 'B', 'C']
list[1] = "b"
print(list)
#結果
#['A', 'b', 'C']

スライスによって取得した部分リストを別のリストによって置き換えることも出来る。

list = ['A', 'B', 'C']
list[1:3] = ["b", "c"]
print(list)
#結果
#['A', 'b', 'c']

また置き換えるリストの数が同じである必要はなく新しい要素を持つリストを代入することも可能。

list = ['A', 'B', 'C']
list[1:3] = ['B', 'b', 'C', 'c']
print(list)
#結果
#['A', 'B', 'b', 'C', 'c']

リストが現在持っている要素数を取得するにはlen()関数を使用する。melでいうsize。

list = ['A', 'B', 'C']
print(len(list))
#結果
#3

オブジェクトをリストの最後に追加するにはappendメソッドを使用する。

list = ['A', 'B', 'C']
list.append('D')
print(list)
#結果
#['A', 'B', 'C', 'D']

別のリストの要素をリストの最後に追加するにはextendメソッドを使用する。

list = ['A', 'B', 'C']
list.extend(['D','E'])
print(list)
#結果
#['A', 'B', 'C', 'D', 'E']

extendメソッドの代わりにappendメソッドの引数にリストを指定した場合、リストオブジェクトそのものが1つの要素として追加されるので注意が必要。

list = ['A', 'B', 'C']
list.append(['D','E'])
print(list)
#結果
#['A', 'B', 'C', ['D', 'E']]

リストとリストを+演算子を使うことで連結することが出来る。
これはリストオブジェクトを変更するものではなくあくまで新規のリストを作成することになる。

list = ['A', 'B', 'C']
newlist = list + ['D', 'E']
print(newlist)
#結果
#['A', 'B', 'C', 'D', 'E']

新しい要素を指定の位置に挿入するにはinsertメソッドを使用する。

list = ['A', 'B', 'C']
list.insert(1, 'D')
print(list)
#結果
#['A', 'D', 'B', 'C']

リスト内の項目を削除するにはdel()関数を使用する。

list = ['A', 'B', 'C','D']
del(list[1:3])
print(list)
#結果
#['A', 'D']

またpopメソッドを使うことで、指定のインデックスの要素を削除することも出来る。
インデックスが指定されなかった場合はリストの末尾の要素が削除される。

list = ['A', 'B', 'C']
list.pop(1)
print(list)
#結果
#['A', 'C']
list.pop()
print(list)
#結果
#['A']

他にはremoveメソッドを使うことで、指定の値を持つオブジェクトが代入されている要素を削除することも出来る。
リストに同じ値のオブジェクトを持つ要素が複数存在した場合には、最初の要素を削除する。

list = ['A', 'B', 'C', 'B', 'D']
list.remove('B')
print(list)
#結果
#['A', 'C', 'B', 'D']

スライスを使用した要素の変更、追加、削除をする手法もある。
要素をリストの末尾に追加するには

list = ['A', 'B', 'C']
list[len(list):] = ['D', 'E', 'F']
print(list)
#結果
#['A', 'B', 'C', 'D', 'E', 'F']

任意の位置に要素を挿入するには

list = ['A', 'B', 'C']
list[1:1] = 'a'
print(list)
#結果
#['A', 'a', 'B', 'C']

要素を削除するには

list = ['A', 'B', 'C']
list[1:3] = []
print(list)
#結果
#['A']

ひとまず長くなったのでここまで、色々なアプローチの仕方がありますね。
ここまでブログにまとめる必要もないかと思ったけど、自分なりにまとめて記すことはやはり有効です。
リンク先のサイトが閉鎖し見返せないとかよくあることだしね!

  1. コメントはまだありません。

  1. トラックバックはまだありません。