2009年10月10日土曜日

リスト

# -*- coding: utf-8 -*-

# 生成する
ls = []
ls = [0] * 3
ls = [1, "abc", [1,2,3]]

# シーケンスから生成する
ls = list()
ls = list("hello") # ['h', 'e', 'l', 'l', 'o'] となる

# 数値のリストを生成する
ls = range(10)  # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] となる
ls = xrange(10)

# ジェネレータから生成する
ls = [i for i in range(10) if i % 2 == 0]

# 複数のイテレータ型から生成する
ls = zip(range(3), range(3, 6))  # [(0, 3), (1, 4), (2, 5)] となる

# 要素を追加する
ls.append(12)

# 指定した位置に要素を挿入する
ls.insert(0, "ab")

# 要素を入れ替える
ls[2] = "456"

# 要素を範囲で入れ替える
ls[3:5] = [7, 8, 9]

# 要素を取得する
obj = ls[0]

# スライスする
ls = ls[0:10]

# popで要素を取得する
obj = ls.pop(3)

# 最大の要素を取得する
obj = max(ls)

# 最小の要素を取得する
obj = max(ls)

# 要素を削除する
del ls[1]

# 要素を範囲で削除する
del ls[2:7]

# 引数と同じ要素を削除する
ls.remove("ab")

# 要素を全てクリアする
del ls[:]

# 結合する
ls = ls + [45, 76, 0] + ls + ["hello", "world"]

# 指定した回数リストを結合する
ls = ls * 3  # ls = ls + ls + ls と同じ

# 拡張する
ls.extend(["er", "yu", "", "bn"])

# 長さを取得する
i = len(ls)

# 引数の位置を取得する
i = ls.index("hello")

# 引数が存在する数を取得する
i = ls.count("hello")

# 要素が存在するか調べる
b = 1 in ls
b = 1 not in ls

# フィルタする
def ls_filter(obj):
    if obj:
        return obj
ls = filter(ls_filter, ls)

# ソートする
ls.sort()

# 並びを反転させる
ls.reverse()

# for文で処理する
for v in ls:
    print v

# リスト型を継承する
class A(list):
    pass

bisectモジュールを使うと順序を保ったまま
リストに要素を追加できる
# -*- coding: utf-8 -*-

import bisect
import random

ls = []

# ランダムに数値を追加する
for i in random.sample(range(100), 10):
    bisect.insort_left(ls, i)

print ls

# 実行するとキレイに並んだリストが表示される
# [15, 17, 24, 29, 36, 57, 68, 73, 79, 84]

詳細はドキュメントで

0 件のコメント:

コメントを投稿