a

list

list: 値の重複が可能

mutableなオブジェクト


初期化

a = ["a", "b", "c", "d"]
print(a)
# ['a', 'b', 'c', 'd']

listへ型変換 : list()

b = list(range(1, 10)) # 組み込み関数:list()
print(b)
# [1, 2, 3, 4, 5, 6, 7, 8, 9]

t = ("aa", "bb", "cc") # タプルをリストへ
c = list(t)
print(c)
# ['aa', 'bb', 'cc']

要素の取得

data = [1, 2 ,3]
print(data[0])
# 1

要素の挿入 : append(値)

data = [1, 2 ,3]
data.append(4) # 1つの要素を末尾に追加
print(data)
# [1, 2, 3, 4]

要素の結合 : extend(リスト)

data = [1, 2 ,3]
data = data + [10, 11] # 複数の時
print(data)
# [1, 2, 3, 10, 11]
data.extend([20, 21])
print(data)
# [1, 2, 3, 10, 11, 20, 21]
data += [30, 31]
print(data)
# [1, 2, 3, 10, 11, 20, 21]

要素の挿入 : insert(挿入位置, 値)

data = [1, 2 ,3]
data.insert(1, "new")
print(data)
# [1, 'new', 2, 3]

取得と削除 : pop(削除位置)

data = [1, 2, 3, 4, 5, 6, 7, 8]
a = data.pop() # 引数を省略すると末尾を削除
print(data)
# [1, 2, 3, 4, 5, 6, 7]
print(a)
# 8
data.pop(1)
print(data)
# [1, 3, 4, 5, 6, 7]

値を指定して削除 : remove(値) / del(インデックス)

colors = ["red", "blue", "yellow", "black", "blue"]
if "blue" in colors: # inで存在チェックをし、boolを返す
    colors.remove("blue") # 削除されるのは1つ。全て削除したい場合はループさせる。
print(colors)
# ['red', 'yellow', 'black']

スライス [開始位置:終了位置:ステップ]

変数で受け取った場合、copyと同じく値コピーとなる為、ポインタは変わる

foods = ["apple", "banana", "pine", "cherry"]
print(foods[1:3]) # 終了位置はマイナス1
# ['banana', 'pine']

リストの比較 : == / is / is not

foods = ["apple", "banana", "pine"]
foods2 = ["apple", "banana", "pine"]
foods3 = ["apple", "banana", "cherry"]
foods4 = foods
print(foods == foods2) # =:要素の一致(並び順も)
# True
print(foods == foods3)
# False
print(foods is foods2) # is:ポインタの一致
# False
print(foods is foods4)
# True
print(foods is not foods4)
# False
foods.append("orange")
print(foods4)
# ['apple', 'banana', 'pine', 'orange']
foods5 = foods4.copy() # copyは値コピー
print(foods5 is foods4)
# False

カウンタ付きループ : enumerate(リスト, 開始値)

enumerate() : 組み込み関数
names = ["鈴木", "田中", "佐藤", "木村"]
for i, name in enumerate(names,1):
    print(f"{i}: {name}")
# 1: 鈴木
# 2: 田中
# 3: 佐藤
# 4: 木村

複数のリストをforで扱う : zip

names = ["鈴木", "田中", "佐藤", "木村"]
names2 = ["つとむ", "あい", "ゆい", "あすか"]
long_names = list()
for name1, name2 in zip(names, names2):
    long_names.append(name1 + name2)
print(long_names)
# ['鈴木つとむ', '田中あい', '佐藤ゆい', '木村あすか']

リスト内包表記 : [式 for in イテラブル]

条件付きリスト内包表記 : [式 for in イテラブル if 条件式]
[]の中に for in を書き、イテラブルなオブジェクトから新しいリストを生成する

numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
numbers2 = [num**2 for num in numbers if num%2 == 0] # 偶数のみ2乗してリスト
print(numbers2)
# [4, 16, 36, 64, 100]

リスト内の検索 : in / index()

colors = ["red", "blue", "yellow", "black", "blue"]
print("yellow" in colors)
# True
print(colors.index("black"))
# 3