チートシート

Python チートシート:構文、コマンド、組み込み関数を表でまとめて確認

更新日: · Skillaria.Top

Python の構文はインデントでブロックを表します。コロンの後の行は 4 つの空白で字下げします。基本は、型宣言のない変数、if/elif/else の条件分岐、for と while のループ、def による関数です。組み込み関数の print、len、range、input、type や、文字列・リスト・辞書のメソッドを覚えると、日常の多くの作業をこなせます。

この Python チートシートには、最初の数か月で手元に置いておきたい内容をまとめました。構文、ループ、組み込み関数、文字列・リスト・辞書のメソッド、ターミナルのコマンドです。どの表も短い早見表で、動く例を REPL にそのまま貼り付けて試せます。

Python の基本構文

Python の大きな特徴は、ブロックを波かっこではなくインデントで表すことです。コロンで終わる行(if、for、def、class)の後に続く行は、4 つの空白で字下げします。タブと空白を混ぜることはできません。インデントが揃っていないと、IndentationError が発生します。

構文例説明
コメント# テキスト# から行末までは無視されます
変数age = 25型は宣言せず、値によって決まります
複数代入a, b = 1, 2アンパック。値の入れ替えは a, b = b, a
出力print("こんにちは", name)引数はスペースで区切られます
入力s = input("名前: ")常に文字列を返します
f 文字列f"{name}: {price:.2f}"式の埋め込みと書式指定ができます
型ヒントcount: int = 0エディタや検査ツールのためのヒント。実行時には確認されません
空のブロックpass構文上ブロックが必要な場所のプレースホルダ
インポートfrom math import sqrtモジュールまたはその中の名前を読み込みます

コメントアウトの書き方

Python で 1 行をコメントアウトするには、行頭に # を付けます。Python には複数行コメント専用の構文はないので、複数行をまとめてコメントアウトするときは各行に # を付けます。VS Code や PyCharm では、行を選択して Ctrl + /(macOS は Cmd + /)を押すと一括で切り替えられます。

# 1 行のコメント
total = price * count  # 行末のコメント
# print(total)         # 一時的に無効化した行

"""...""" の三重引用符で囲む方法も見かけますが、これはコメントではなく文字列リテラルです。関数やクラスの先頭に置けば docstring(説明文)になります。

データ型

型リテラル変更可能か
int42、1_000_000不可
float3.14、1e-3不可
boolTrue、False不可
str"テキスト"、'テキスト'、"""複数行"""不可
list[1, 2, 3]可
tuple(1, 2)、(1,)不可
dict{"a": 1}可
set{1, 2}、空は set()可
NoneTypeNone—

演算子

グループ演算子例 → 結果
算術+ - * / // % **7 // 2 → 3、7 % 2 → 1、2 ** 10 → 1024
比較== != < > <= >=1 < x < 10 — 連鎖比較
論理and or notx or "デフォルト"
所属in、not in"a" in "abc" → True
同一性is、is notx is None
代入+= -= *= /=、:=if (n := len(s)) > 10: ...

条件分岐とパターンマッチング

if score >= 90:
    grade = "A"
elif score >= 70:
    grade = "B"
else:
    grade = "C"

status = "成人" if age >= 18 else "未成年"   # 条件式(三項演算子)

match command:
    case "start":
        print("開始")
    case "stop" | "exit":
        print("停止")
    case _:
        print("不明なコマンド")

偽とみなされるのは、False、None、0、空文字列、空のコレクションです。そのため if len(items) > 0 の代わりに、単に if items と書くのが一般的です。

Python のループ:for と while の書き方

for ループ

for 文の書き方は for 変数 in 並び: で、その後に字下げした本体を書きます。ループは、文字列、リスト、辞書、ファイル、range など、あらゆる反復可能なオブジェクトを順に処理できます。

for i in range(5):              # 0 1 2 3 4
    print(i)

for i in range(10, 0, -2):      # 10 8 6 4 2
    print(i)

for i, fruit in enumerate(["りんご", "なし"], start=1):
    print(i, fruit)

for name, score in zip(names, scores):
    print(name, score)

for key, value in prices.items():
    print(key, value)

while ループ

attempts = 3
while attempts > 0:
    password = input("パスワード: ")
    if password == "secret":
        print("ログインしました")
        break
    attempts -= 1
else:
    print("試行回数を超えました")   # break で抜けなかった場合に実行
命令動作
breakループを途中で抜けます
continue次の繰り返しへ進みます
ループの elsebreak なしで終了した場合に実行されます
range(stop)、range(start, stop, step)数の並び。stop は含まれません

内包表記(comprehension)

squares = [x ** 2 for x in range(10)]
evens = [x for x in numbers if x % 2 == 0]
lengths = {word: len(word) for word in words}
unique = {c.lower() for c in text}
total = sum(x * x for x in range(100))   # ジェネレータ式

関数

def greet(name: str, greeting: str = "こんにちは") -> str:
    """挨拶を返します。"""
    return f"{greeting}、{name}さん!"

def total(*args, **kwargs):
    return sum(args), kwargs

square = lambda x: x * x
print(greet("太郎"))                     # こんにちは、太郎さん!
print(greet("太郎", greeting="やあ"))    # やあ、太郎さん!
要素意味
def f(a, b=1)デフォルト値を持つ引数
*args任意個数の位置引数(タプル)
**kwargs任意個数のキーワード引数(辞書)
return値を返します。省略すると None を返します
lambda x: ...一つの式からなる無名関数
global、nonlocal外側のスコープにある変数を変更します

変更可能な既定値、たとえば def f(items=[]) は使わないでください。リストは一度だけ作られ、呼び出しの間で中身が蓄積されてしまいます。正しくは items=None として、関数の中で if items is None: items = [] と書きます。

Python の組み込み関数

組み込み関数は、インポートなしで使えます。ほぼすべてのスクリプトで登場する基本的な関数です。

関数動作例 → 結果
print()値を出力しますprint(1, 2, sep="-") → 1-2
input()キーボードから文字列を読み取りますint(input())
len()コレクションや文字列の長さlen("abc") → 3
type()オブジェクトの型type(3.0) → <class 'float'>
isinstance()型の判定isinstance(5, int) → True
int() float() str() bool()型の変換int("42") → 42
list() tuple() set() dict()コレクションの作成list("ab") → ['a', 'b']
range()数の範囲list(range(3)) → [0, 1, 2]
enumerate()(インデックス, 要素)の組list(enumerate("ab")) → [(0, 'a'), (1, 'b')]
zip()並びを順番に組み合わせますlist(zip([1, 2], "ab")) → [(1, 'a'), (2, 'b')]
sum() min() max()合計、最小値、最大値max([3, 7, 1]) → 7
abs() round()絶対値と丸めround(3.14159, 2) → 3.14
sorted()新しい並べ替え済みリストsorted(words, key=len, reverse=True)
reversed()逆順のイテレータlist(reversed([1, 2])) → [2, 1]
map() filter()関数の適用、絞り込みlist(map(str, [1, 2])) → ['1', '2']
any() all()一つでも真か、すべて真かall(x > 0 for x in nums)
open()ファイルを開きますopen("a.txt", encoding="utf-8")
help() dir()ヘルプと属性の一覧help(str.split)、dir(list)
id() hash()オブジェクトの ID とハッシュ値hash("a")

いつも手元に置いておきたいリファレンスは、REPL の help() 関数です。help(dict) は辞書のすべてのメソッドを説明付きで表示し、dir(obj) は使える名前の一覧を表示します。

文字列のメソッド

Python の文字列は変更できません。どのメソッドも新しい文字列を返します。スライスはリストと同じように使えます。s[1:4] は部分の取り出し、s[::-1] は逆順です。

メソッド例 → 結果
upper() lower()"Py".upper() → 'PY'
capitalize() title()"hello world".title() → 'Hello World'
strip() lstrip() rstrip()" hi \n".strip() → 'hi'
split(sep)"a,b,c".split(",") → ['a', 'b', 'c']
join(iterable)"-".join(["a", "b"]) → 'a-b'
replace(old, new)"猫".replace("猫", "犬") → '犬'
find() index()"hello".find("l") → 2。見つからない場合は -1(index ではエラー)
count()"banana".count("a") → 3
startswith() endswith()"file.py".endswith(".py") → True
isdigit() isalpha() isspace()"123".isdigit() → True
removeprefix() removesuffix()"test_a".removeprefix("test_") → 'a'
zfill() center() ljust()"7".zfill(3) → '007'
format()"{} + {}".format(1, 2) → '1 + 2'

リストのコマンド

リストは変更可能な順序付きのコレクションです。ほとんどのメソッドはリストをその場で変更し、None を返します。そのため a = a.sort() はよくある間違いです。

操作動作例
append(x)末尾に追加しますa.append(4)
extend(iter)すべての要素を追加しますa.extend([5, 6])
insert(i, x)インデックスの位置に挿入しますa.insert(0, "first")
remove(x)値が最初に現れる要素を削除しますa.remove(3)
pop(i)要素を削除して返します(既定は最後の要素)last = a.pop()
clear()リストを空にしますa.clear()
index(x)最初に現れるインデックスa.index("b")
count(x)出現回数a.count(1)
sort()その場で並べ替えますa.sort(key=str.lower)
reverse()その場で逆順にしますa.reverse()
copy()浅いコピーを作りますb = a.copy()
del a[i]インデックスまたはスライスで削除しますdel a[1:3]
スライスa[start:stop:step]a[-1] は最後の要素、a[:3] は最初の三つ

辞書のコマンド

操作動作例
d[key]キーに対応する値。キーがなければ KeyErrord["name"]
get(key, default)値、またはその代わりの既定値d.get("age", 0)
d[key] = value追加または変更d["city"] = "大阪"
keys() values() items()キー、値、組の一覧for k, v in d.items():
update()別の辞書と統合しますd.update({"a": 1})
d1 | d2統合した新しい辞書merged = defaults | user
pop(key, default)削除して値を返しますd.pop("tmp", None)
popitem()最後に追加された組を削除しますd.popitem()
setdefault(key, value)値を返します。キーがなければ作成しますd.setdefault("tags", []).append("py")
key in dキーがあるかどうかif "name" in d:
dict.fromkeys()同じ値を持つキーから辞書を作りますdict.fromkeys("abc", 0)
len(d)、del d[key]サイズと削除del d["old"]

タプルと集合

操作例 → 結果
タプルのアンパックx, y = (3, 4)
集合への追加s.add(5)、削除は s.discard(5)
和集合・積集合{1, 2} | {2, 3} → {1, 2, 3}、{1, 2} & {2, 3} → {2}
差集合{1, 2} - {2} → {1}
リストの重複を除くlist(dict.fromkeys(items))(順序を保ちます)

例外とファイル

try:
    number = int(input("数: "))
except ValueError as err:
    print("数ではありません:", err)
else:
    print("成功")
finally:
    print("必ず実行されます")

with open("data.txt", "w", encoding="utf-8") as f:
    f.write("1行目\n")

with open("data.txt", encoding="utf-8") as f:
    for line in f:
        print(line.rstrip())
例外発生する場面
SyntaxError、IndentationError構文またはインデントのエラー
NameError名前が定義されていない(綴りの間違いなど)
TypeError型が合わない操作。例: "1" + 1
ValueError型は正しいが値が不適切。例: int("abc")
IndexError、KeyErrorインデックスやキーが存在しない
FileNotFoundErrorファイルが見つからない
ZeroDivisionErrorゼロで割った

クラス

from dataclasses import dataclass

class Dog:
    def __init__(self, name: str):
        self.name = name

    def bark(self) -> str:
        return f"{self.name}: ワン!"

@dataclass
class Point:
    x: float
    y: float

print(Dog("ポチ").bark())    # ポチ: ワン!
print(Point(1, 2))           # Point(x=1, y=2)

組み込みモジュール

標準ライブラリはインタプリタと一緒にインストールされています。import するだけで使えます。

モジュール用途例
math数学math.sqrt(16) → 4.0
random乱数random.randint(1, 6)、random.choice(items)
datetime日付と時刻datetime.date.today()
pathlibパスとファイルPath("data").glob("*.csv")
os、sysシステム、環境変数、引数os.environ.get("HOME")、sys.argv
jsonJSON の読み書きjson.loads(text)、json.dumps(obj, ensure_ascii=False)
csvCSV の表csv.DictReader(f)
collectionsCounter、defaultdict、dequeCounter("banana").most_common(1) → [('a', 3)]
itertools組み合わせと反復子の連結itertools.chain(a, b)
re正規表現re.findall(r"\d+", s)
time待機と時間の計測time.sleep(1)、time.perf_counter()
asyncio非同期処理asyncio.run(main())

Python 3.15 では遅延インポート(PEP 810)が使えるようになりました。lazy import pandas as pd と書くと、モジュールの読み込みは最初に使われるまで遅らされ、重い依存関係を持つスクリプトの起動が速くなります。

Python のターミナルコマンド

「python コマンド」で検索される内容は、インタプリタを起動したり、ライブラリをインストールしたりするコマンドです。Windows では python3 の代わりに python または py と書くのが一般的です。

コマンド動作
python3 --versionバージョンを表示します
python3対話型コンソール(REPL)を開きます。終了は exit()
python3 script.pyファイルを実行します
python3 -c "print(2 + 2)"一行のコードを実行します
python3 -m venv .venv仮想環境を作成します
source .venv/bin/activate / .venv\Scripts\activate仮想環境を有効にします(Linux と macOS / Windows)
python3 -m pip install requestsパッケージをインストールします
pip list、pip freeze > requirements.txtパッケージの一覧を表示し、保存します
pip install -r requirements.txtファイルの依存関係をまとめてインストールします
python3 -m http.server 8000現在のフォルダで簡易 Web サーバーを起動します
uv init、uv add requests、uv run main.pyuv でプロジェクトの作成、依存関係の追加、実行を行います

初心者によくある間違い

  • 比較に = を使う:条件式では == が必要です。一つの = は代入です。
  • コロンの書き忘れ:if、for、def の後のコロンがないと SyntaxError になります。
  • 文字列と数値の足し算:"年齢: " + 25 はエラーです。f"年齢: {25}" と書きましょう。
  • ループ中にリストを変更する:for x in a[:] のようにコピーを回すか、新しいリストを作りましょう。
  • input() は文字列を返す:計算に使うときは int() や float() で囲みます。

まとめ

Python の構文は、インデント、コロン、いくつかの基本的な構文要素(条件分岐、for と while のループ、関数、クラス)で成り立っています。そこに二十ほどの組み込み関数と、文字列・リスト・辞書のメソッドを加えれば、日常的な作業の大部分をこなせます。このチートシートを保存しておき、慣れてきたらモジュールや非同期処理に進んでください。講座「Python 3.15: 初心者からプロまで」では、これらの内容を一つずつ実践しながら学びます。

よくある質問

インデントには何個の空白を使うのが普通ですか?

標準の PEP 8 では、一段階につき 4 つの空白です。大切なのは、ブロック全体で統一し、タブと混ぜないことです。

リストとタプルの違いは何ですか?

リストは変更可能で、要素の追加や並べ替えをその場で行えます。タプルは変更できないため、辞書のキーとして使えたり、固定された値の組に向いていたりします。

Python でオブジェクトのメソッドを一覧で確認するにはどうしますか?

dir(obj) で名前の一覧、help(obj) で説明を表示します。たとえば help(str) は文字列のすべてのメソッドを表示します。

sort() と sorted() の違いは何ですか?

list.sort() はリスト自体を並べ替えて None を返します。一方、sorted() は新しいリストを返し、どの反復可能なコレクションにも使えます。

行末にセミコロンは必要ですか?

いいえ。セミコロンは一行に複数の命令を書くときに使えますが、通常のコードでは命令ごとに改行して書きます。