リスト

記事
IT・テクノロジー

Import

import random

作成

値 を n 個持つリスト
[値] * n

取得

末尾を削除して取得
リスト.pop()

追加

末尾
リスト.append(値)
位置を指定
リスト.insert(インデックス, 値)

削除

インデックスを指定
del リスト[インデックス]
値を指定
リスト.remove(値)
 値が存在しなくてもエラーを出さない
新リスト = [x for x in リスト if x != 値]
if 値 in リスト:
    リスト.remove(値)
他のリストの値を削除
[x for x in リスト if x not in 他のリスト]
リスト自体
del リスト

連結

変更
リスト.extend(他のリスト)
作成
リスト += 他リスト

変換

2次元配列から1次元配列
from itertools import chain
1次元配列 = list(chain.from_iterable(2次元配列))

部分リスト

[始, 終)
リスト[始:終]
  ※終が要素数より大きい場合、末尾までになる
[始, 末尾]
リスト[始:]
[0, 終)
リスト[:終]

ランダムに選択

import random
要素 = random.choice(リスト)
seed はデフォルトでシステム時間を使用する

ループ

for 値 in リスト:
インデックスと値
for i, 値 in enumerate(リスト):
追加と削除
ループ内ではやらない(バグ、削除時の要素のシフトによるオーバーヘッド)
新しいリストを作成する(シンプル、要素は値ではなく参照なのでオーバーヘッドも少ない)
インデックス
for i in range(len(リスト)):

内包表記

[式 for 要素 in リスト]
[式 for 要素 in リスト if 条件]
 条件が2つある場合
[式 for 要素 in リスト if 条件1 and 条件2]

合計

sum(リスト)

チェック

含む
値 in リスト
要素が存在する
if リスト:
要素と順番が同じか
リスト1 == リスト2
要素が同じか
set(リスト1) == set(リスト2)

並べ替え

昇順
リスト.sort()
新リスト = sorted(リスト)
降順
リスト.sort(reverse=True)
リスト.reverse()
アルファベット
リスト.sort(key=str.lower)
ファイル名  (pathlib.Path)
リスト.sort(key=lambda p: p.name)
最初の単語
リスト.sort(key=lambda s: s.split()[0])
複数の項目でソートする
from operator import itemgetter
辞書のリスト.sort(key=itemgetter("キー1", "キー2"))
ランダム
 リストを変更
random.shuffle(リスト)
 新しいリストをつくる
ランダムリスト = random.sample(リスト, len(リスト))

重複を除去

新リスト = list(set(リスト))

コピー

import copy
copy.deepcopy(リスト)
要素にリストがないシンプルなコピー
リスト.copy()

要素数

len(リスト)

インデックス

0~
Get
リスト.index(値)
※値が存在しなければエラーになる

表示

きれいに表示
import pprint
pprint.pprint(リスト)

サービス数40万件のスキルマーケット、あなたにぴったりのサービスを探す