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/ — 内包表記で偶数だけ取り出す
力試ししたい方は クイズ形式の演習(任意) もあります。読むだけでも十分です。