すらぼうの開発ノート

モバイルアプリエンジニアのメモ

【Python】リスト(List)型データの生成・操作方法まとめ

現在Recursionに取り組んでいる。 そこで学んだことをメモする。


リスト(List)

複数のデータをまとめたデータ構造。 各データにはインデックス(index)と呼ばれる番号が割り振られる。 インデックスは先頭から0で始まり、1つ隣に移動するごとにインデックスが1つ増える

www.python.jp

Pythonにおいてリストは動的配列と呼ばれる形式。 なのでリストに含まれるデータ型は統一されている必要はない

e-words.jp

生成

直接要素を指定

myList = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

print(myList)
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

リスト内包表記

myList = [val for val in range(10)]

print(myList)
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

文字列をリストに変換

myStr = "hello"
myList = list(myStr)

print(myList)
# ['h', 'e', 'l', 'l', 'o']

任意の値を任意個数要素にもつリストを生成

my_list = [0] * 10
print(my_list)

# [0, 0, 0, 0, 0, 0, 0, 0, 0, 0] 

操作

読み取り

特定インデックスの値

myList = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

print(myList[5])
# 5

for文を使用して繰り返し処理

myList = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

for val in myList:
    print(val)
    
# 0
# 1
# 2
# 3
# 4
# 5
# 6
# 7
# 8
# 9

後ろから数えた特定インデックスの値

追加

末尾に要素を追加(append)

myList = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

myList.append(10)

print(myList)
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

末尾に複数の要素を追加(extend)

myList = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

myList.extend([10,11])

print(myList)
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]

特定インデックスに値を追加(insert)

myList = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

# インデックス5に10を追加
myList.insert(5, 10)

print(myList)
# [0, 1, 2, 3, 4, 10, 5, 6, 7, 8, 9]

特定のインデックスに複数の値を追加(スライスを用いる)

myList = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

# インデックス0に10, 11, 12, 13を追加
myList[0:0] = [10, 11,12,13]

print(myList)
# [10, 11, 12, 13, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

更新

特定のインデックス範囲の値を更新(スライスを用いる)

myList = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

# インデックス0に10を追加
myList[0:0] = [10, 11,12,13]

print(myList)
# [10, 11, 12, 13, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

削除

末尾の値を削除(pop)

myList = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

myList.pop()

print(myList)
# [0, 1, 2, 3, 4, 5, 6, 7, 8]

特定のインデックスの値を削除(pop)

pop(インデックス)で指定した値は元のリストから削除され、 戻り値に渡される。

myList = [0,1,2,3,4,5,6,7,8,9]

removedVal = myList.pop(5)

print(myList)
# [0, 1, 2, 3, 4, 6, 7, 8, 9]

print(removedVal)
# 5

結合

ソート

昇順にソート(sort)

破壊的な変更なので、元のリストの並びが変更される。

myList = [5, 1, 9, 3, 8, 4, 2, 7, 0, 6]

myList.sort()

print(myList)
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

降順にソート(sort(reverse=True))

破壊的な変更なので、元のリストの並びが変更される。

myList = [5, 1, 9, 3, 8, 4, 2, 7, 0, 6]

myList.sort(reverse=True)

print(myList)
# [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]

その他

素数を数える

myList = [1,1,2,3,4,5,5,5,6]

print(myList.count(5))
# 3

条件式の中でリストが空か判定する

if not my_list:
    print("empty")

# my_listが空ならば```not []```は```True```と判定される。