LoginSignup
3
3

More than 1 year has passed since last update.

Python備忘録(リスト)

Last updated at Posted at 2023-01-05

たまにpythonで書く時に“こうしたいんだけどどう書くんだっけ”となるので, 自分が実際につまずいたことと基本事項をまとめました(随時更新します).
メモ程度の記述なので詳細はググってみてください.

今回はリストです.

リストの操作

リストの初期化

#リストの初期化
list0 = [1, 2, 3, 4, 5]         #基本
list1 = [0] * 10                #同じ要素を沢山
list2 = [[1, 2, 3] for i in range(3)]   #多次元
[1, 2, 3, 4, 5]
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[[1, 2, 3], [1, 2, 3], [1, 2, 3]]

各要素の型変換

##型変換
list = [1, 2, 3, 4]
print(type(list[0]))
list = [str(i)+"!" for i in list]   #型変換
print(list)
print(type(list[0]))
<class 'int'>
['1!', '2!', '3!', '4!']
<class 'str'>

要素の追加, 挿入, 連結, 分割

# 要素の追加, 挿入
list=[]
#追加
list.append(1)
list.append(2)
#挿入
list.insert(1, 1.5) #(添え字, 挿入データ)
[1, 2]
[1, 1.5, 2]

リストを連結する際は, extendメソッドもしくは'+'演算子を使う.

#リストの結合
list1 = [1, 2, 3]
list2 = [4, 5, 6]
list3 = [7, 8, 9]
list1.extend(list2)
list1+=list3
[1, 2, 3, 4, 5, 6]
[1, 2, 3, 4, 5, 6, 7, 8, 9]

リストを分割(一部を抽出)する際はスライスを使う

#リストの分割
list = [1, 2, 3, 4, 5, 6, 7, 8, 9]
list1 = list[0:3]
list2 = list[3:6]
list3 = list[0:9:2]
[1, 2, 3]
[4, 5, 6]
[1, 3, 5, 7, 9]

インデックスの取得

indexメソッドを使う.

#要素のインデックスの取得
list = [9, 4, 6, 2, 3, 4]
idx1 = list.index(2) #存在しない場合はValueError
idx2 = list.index(4)  #重複した要素がある場合, 一番初めが出力
3
1

重複した要素が含まれるリストに対し, すべての要素のインデックスを取得する場合は組み込み関数enumurateを以下のようにして使う.

list = [9, 4, 6, 2, 3, 4]
idx = [x for x, i in enumerate(list) if i == 4]
[1, 5]

要素の削除

要素そのものを指定する場合は.remove, インデックスで指定する場合は.popを使う. 全てを消去する場合は.clearを用いる.

#要素の削除
list = [9, 4, 6, 2, 3, 4]
list.remove(6)
list.pop(2)
list.clear()
[9, 4, 2, 3, 4]
[9, 4, 3, 4]
[]

要素のカウント

#要素のカウント
list = ['OK', 'OK', 'NG', 'OK', 'NG']
c = list.count('OK')
3

ソート

sortメソッドと組み込み関数のsortedがある.
sortはリストの中身を書き換える. 降順にするの場合はreverse=Trueとする.

#要素のソート
list = [5, 3, 8, 6, 4, 1]
list.sort()
list.sort(reverse=True)
[1, 3, 4, 5, 6, 8]
[8, 6, 5, 4, 3, 1]

sortedはソート済みの新しいリストを返す.

list = [5, 3, 8, 6, 4, 1]
list_s = sorted(list)
print(list)
print(list_s)
[5, 3, 8, 6, 4, 1]
[1, 3, 4, 5, 6, 8]

2つのリストの各要素を対応付けてソートする場合(例えば数量を表示するランキング)はzip関数を使って以下のように書く. 動作原理は https://udon.little-pear.net/python_double_sort/ を参照してください.

list_student = ['A', 'B', 'C', 'D']
list_score = [88, 76, 72, 84]
rank = list(zip(*sorted(zip(list_score, list_student), reverse=True)))
[(88, 84, 76, 72), ('A', 'D', 'B', 'C')]

さいごに

リストの基本的な操作について少しまとめました. 他にもいろいろまとめていく予定ですので, よかったらそちらもご覧ください.

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3