ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
セットへの要素追加とは
Python のセット(set)は重複を許さないコレクション型です。要素を追加するメソッドは add()(1 件)と update()(複数件)の 2 つが基本です。
add() — 1 件ずつ追加
セット名.add(値)
基本例
s = {"a", "b", "c"}
s.add("d")
print(s)
# {'d', 'b', 'c', 'a'} ← 順序は保証されない
# 既にある値を追加しても変化なし(エラーにもならない)
s.add("d")
print(s)
# {'d', 'b', 'c', 'a'}
セットは重複を許さないため、同じ値を再度 add() しても集合は変化しません。エラーも出ないので、重複チェックを自前で書く必要がありません。
update() — 複数件まとめて追加
イテラブル(リスト、タプル、セット、文字列、ジェネレータなど)から複数の要素を一度に追加します。
s = {1, 2, 3}
# リストから追加
s.update([4, 5, 6])
print(s) # {1, 2, 3, 4, 5, 6}
# 複数のイテラブルを同時指定可能
s.update([7, 8], {9, 10}, (11,))
print(s) # {1, 2, ..., 11}
# 文字列は 1 文字ずつ追加される(要注意)
s = set()
s.update("abc")
print(s) # {'a', 'b', 'c'}
# 1 つの文字列として追加したいときは add() を使う
s = set()
s.add("abc")
print(s) # {'abc'}
add と update の違い
| メソッド | 引数 | 用途 |
|---|---|---|
add(x) | 単一の値(ハッシュ可能) | 1 件追加 |
update(iter, ...) | イテラブル(1 つ以上) | 複数件まとめて追加 |
|= 演算子 | セット | update と同義(セット同士のみ) |
# |= は update と同等
s = {1, 2, 3}
s |= {4, 5}
print(s) # {1, 2, 3, 4, 5}
追加可能な値(ハッシュ可能性)
セットの要素になれるのはハッシュ可能な不変オブジェクトだけです。可変オブジェクト(list / dict / set)は追加できません。
| 型 | 追加可否 |
|---|---|
| int / float / bool | OK |
| str | OK |
| tuple(中身もハッシュ可能なら) | OK |
| frozenset | OK |
| list | NG — TypeError: unhashable type: 'list' |
| dict | NG |
| set | NG(frozenset なら可) |
s = set()
s.add((1, 2)) # OK: タプル
s.add(frozenset({1, 2})) # OK: frozenset
s.add([1, 2]) # NG: TypeError
s.add({"a": 1}) # NG: TypeError
順序は保証されない
セットには順序がありません。print() したときの並びは、ハッシュ値や挿入順に依存し、実行ごとに変わる可能性もあります。
s = set()
s.add("a")
s.add("b")
s.add("c")
print(s) # 順序は保証されない
# 順序が必要なら sorted で取り出す
print(sorted(s)) # ['a', 'b', 'c']
list との性能比較
| 操作 | list | set |
|---|---|---|
| 追加 | O(1)(append) | O(1) 平均 |
| 存在チェック(in) | O(n) | O(1) 平均 |
| 重複を許す | はい | いいえ |
| 順序保証 | はい | いいえ |
| 添字アクセス | はい | いいえ |
「重複を排除したい」「含まれているか頻繁に調べたい」用途では set の方が圧倒的に速いです。たとえば「1 万件のユーザー ID から重複を除く」処理では、set 化が定石です。
ids = ["u1", "u2", "u1", "u3", "u2", "u4"]
unique = set(ids)
print(unique) # {'u1', 'u2', 'u3', 'u4'}
# 順序を保ちつつ重複排除(Python 3.7+ の dict 仕様を利用)
unique_ordered = list(dict.fromkeys(ids))
print(unique_ordered) # ['u1', 'u2', 'u3', 'u4']
add の戻り値
add() も update() も戻り値は Noneです。リスト内包表記の中で {s.add(x) for x in ...} としても期待した動作になりません(None だけのセットになる)。
# 悪い例
s = set()
{s.add(x) for x in [1, 2, 3]}
print(s) # {1, 2, 3} 動くが None のセットを作る副作用ありで非推奨
# 良い例
s = set()
s.update([1, 2, 3])
print(s) # {1, 2, 3}
# 最良: 内包表記で直接セット作成
s = {x for x in [1, 2, 3]}
print(s) # {1, 2, 3}
discard / remove との対比
追加とは逆に、削除には remove()(無いとエラー)と discard()(無くてもエラーなし)があります。add は重複してもエラーにならない非対称さがあります。
FAQ
Q: タプルをまとめて追加するときの落とし穴は?
A: s.update((1, 2, 3)) は要素 3 個が追加されます。タプル自体を 1 要素として追加したいなら s.add((1, 2, 3))。
Q: スレッドセーフ?
A: CPython の GIL 下では単純な add は概ね安全ですが、複数操作を一連で扱うなら threading.Lock を使うのが無難です。
Q: 順序付きセットはある?
A: 標準ライブラリにはありません。OrderedDict や dict.fromkeys で代替するか、sortedcontainers.SortedSet などサードパーティを使います。
関連
- セット — 親カテゴリ
- remove / discard / pop — 要素削除
- union / intersection / difference — 集合演算
- frozenset — 変更不可なセット
- list / dict / tuple — 他の組み込みコレクション
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページはありません
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript base URL 取得方法|window.location.origin と SSR/Node.js 対応
- 4 YouTube Data API v3 エラー一覧|403/400/404 の主要原因と切り分け
- 5 Spring Frameworkのアノテーション一覧
- 6 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- IPv6とは|128bitアドレス・コロン16進表記/::省略・リンクローカル・SLAAC・デュアルスタック NEW 2026-06-22 12:34:44
- VPNとは|暗号トンネル・サイト間/リモートアクセス・IPsec/SSL-VPN/WireGuardを解説 NEW 2026-06-22 12:19:10
- MAC アドレスフィルタリングの仕組みと限界 | ネットワーク入門 NEW 2026-06-22 12:19:10
- WebRTC とは ブラウザ間 P2P の音声・映像・データ通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- gRPC とは HTTP/2 + Protocol Buffers の高速 RPC | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/3 (QUIC) とは UDP ベースの低遅延 Web 通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/2 とは 多重化・HPACK・バイナリフレーム | ネットワーク入門 NEW 2026-06-22 12:17:25
- Web通信プロトコル入門 HTTP/2・HTTP/3・WebSocket・gRPC・WebRTC | ネットワーク入門 NEW 2026-06-22 12:17:25
- WebSocket とは 全二重リアルタイム通信 ws/wss | ネットワーク入門 NEW 2026-06-22 12:17:25
- ファイアウォールとは|パケットフィルタ・ステートフル・DMZ・次世代FW(L4/L7)を解説 NEW 2026-06-22 12:17:24
- iptables/nftablesとは|テーブル・チェーン・ルール例・永続化をLinux視点で解説 NEW 2026-06-22 12:17:24
- HAProxy とは frontend/backend と設定例 | ネットワーク入門 NEW 2026-06-22 12:17:24
- 証明書と認証局(CA)とは|X.509・信頼チェーン・DV/OV/EV・失効(CRL/OCSP)を解説 NEW 2026-06-22 12:17:24
- CDN とは エッジキャッシュ・TTL・Cloudflare/CloudFront | ネットワーク入門 NEW 2026-06-22 12:17:24
- TLS/SSLの仕組み|ハンドシェイク・暗号スイート・前方秘匿性・証明書検証をわかりやすく解説 NEW 2026-06-22 12:17:24
コメントを削除してもよろしいでしょうか?