採点されません。匿名です。 間違えることは学習の一部です。読むだけでもかまいません。

L05 ch01 — list と内包表記

テクノロジ系 / L05 collection — コレクション

L05 ch01 — list と内包表記

Python のコレクション操作の基本

ゴール

  • list の基本操作 (append / pop / slice)
  • 内包表記 (list comprehension)
  • mutable な性質を理解

list の基本

fruits = ["りんご", "みかん"]

fruits.append("ぶどう")  # 末尾追加
fruits.pop()              # 末尾削除
fruits[0]                 # りんご
fruits[-1]                # 末尾要素
len(fruits)               # 要素数

slice (切り出し)

nums = [0, 1, 2, 3, 4, 5]

nums[1:4]    # [1, 2, 3]
nums[:3]     # [0, 1, 2]
nums[3:]     # [3, 4, 5]
nums[::2]    # [0, 2, 4]   step=2
nums[::-1]   # 逆順

内包表記

# for ループ版
doubled = []
for n in nums:
    doubled.append(n * 2)

# 内包表記 (1 行)
doubled = [n * 2 for n in nums]

フィルタ付き内包表記

# 偶数のみ 2 倍
result = [n * 2 for n in nums if n % 2 == 0]

# 文字列リストから空でないものだけ大文字化
names = ["Taro", "", "Hanako"]
upper = [n.upper() for n in names if n]

list vs tuple

観点list [1,2,3]tuple (1,2,3)
変更◯ 可 (mutable)✕ 不可 (immutable)
用途長さ可変のコレクション関連する固定値の組
パフォーマンスやや遅い速い

罠: 参照と値

a = [1, 2, 3]
b = a              # 参照コピー
b.append(4)
print(a)           # [1, 2, 3, 4] ← a も変わる

c = a.copy()       # 値コピー
c.append(5)
print(a)           # [1, 2, 3, 4] ← 変わらない

drill

drill/ — 内包表記で偶数だけ取り出す

力試ししたい方は クイズ形式の演習(任意) もあります。読むだけでも十分です。