[解決済み] Python set から set を取り除く
質問
Python 2.7.2 のドキュメントの解釈によると
組み込みの型 5.7 セット型
に渡すことで、集合Aの要素を集合Bから取り除くことができるはずです。
set.remove(elem)
または
set.discard(elem)
2.7.2 のドキュメントより。
の elem 引数は
__contains__()
,remove()
そしてdiscard()
メソッドはセットであってもよい。
を渡せるということだと解釈しています。
set
に
remove(elem)
または
discard(elem)
といった具合で、それらの要素がターゲットセットから削除されます。私はこれを使って、文字列からすべての母音を削除したり
単語頻度ヒストグラムからすべての共通単語を削除する
. 以下はテストコードです。
Python 2.7.2 (default, Jun 12 2011, 14:24:46) [M...
Type "help", "copyright", "credits" or "license"
>>> a = set(range(10))
>>> b = set(range(5,10))
>>> a
set([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> b
set([8, 9, 5, 6, 7])
>>> a.remove(b)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: set([8, 9, 5, 6, 7])
>>> a.discard(b)
>>> a
set([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
>>>
どれが返ってくるか期待する。
>>> a
set([0, 1, 2, 3, 4])
で実現できることは分かっています。
a.difference(b)
で、これは新しいセットを返します。
set.difference_update(other)
を使うか、集合演算子
a -= b
で、これはセットをその場で変更します。
ということは、これはドキュメントのバグなのでしょうか?できること
set.remove(elem)
は実際には引数としてセットを取らないのでしょうか?それとも、ドキュメントでは集合の集合を参照しているのでしょうか?ということは
difference_update
が私の解釈を実現していることから、私は後者のケースだと推測しています。
十分不明瞭ですか?
EDIT 3年間の追加の(いくつかの専門的な)pythonの仕事の後、そして最近この質問に引き戻され、私は今、私が実際にしようとしていたことは、で達成することができることを実現します。
>>> c = a.difference(b)
set([0,1,2,3,4])
というのは、もともと私が得ようとしていたものです。
EDIT
その後
さらに4年
pythonの開発で... この操作はセットリテラルを使ってもっときれいに表現できることに気がつきました。
-
演算子を使ってよりきれいに表現できること、そして集合の違いが非可換であることを示すのがより完全であることを理解しています。
>>> a={0,1,2,3}
>>> b={2,3,4,5}
>>> a-b
set([0, 1])
>>> b-a
set([4, 5])
どのように解決するのですか?
すでに回答されていますね。集合の集合(実際にはフロジン集合を含む集合)を指します。
あなたが参照している段落 で始まっています。
<ブロッククオート注意: __contains__(), remove(), discard() メソッドの elem 引数は集合であってもよい。
ということは
b
で
a.remove(b)
はセットである可能性があり、その後に続く。
等価なフローゼンセットの検索をサポートするために をサポートするために、elem セットは検索中に一時的に変異され、その後復元されます。検索中、elemセットは意味のある値ではないので、読み込んだり、変異させたりしてはいけません。
ということは、もし
b
は集合です。
a.remove(b)
をスキャンします。
a
に相当するフロジンセットについて
b
を探し、それを削除する (あるいは
KeyError
を投げる)。
関連
-
[解決済み] Pythonには文字列の'contains'サブストリングメソッドがありますか?
-
[解決済み] Pythonで現在時刻を取得する方法
-
[解決済み] Pythonで2つのリストを連結する方法は?
-
[解決済み] ファイルのコピー方法について教えてください。
-
[解決済み] Pythonで例外を手動で発生(スロー)させる
-
[解決済み] Pythonの辞書からキーを削除するにはどうしたらいいですか?
-
[解決済み】ネストされたディレクトリを安全に作成するには?
-
[解決済み】Pythonに三項条件演算子はありますか?
-
[解決済み] Flaskで1時間ごとに関数を実行するようにスケジュールするには?
-
[解決済み] バブルソートの宿題
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] SQLAlchemy: セッションの作成と再利用
-
[解決済み] Pythonです。未束縛のメソッドを束縛する?
-
[解決済み] googletransがエラー 'NoneType' オブジェクトに 'group' 属性がない、と言って動かなくなった。
-
[解決済み] Spyderを仮想環境で動作させるには?
-
[解決済み] Python 3でバイナリデータを標準出力に書き込むには?
-
[解決済み] 値で列挙名を取得する [重複]。
-
[解決済み] Pythonで0xを使わずにhex()を使うには?
-
[解決済み] Python 言語を決定するには?
-
[解決済み] virtualenvsはどこに作成するのですか?
-
[解決済み] あるメソッドが複数の引数のうち1つの引数で呼び出されたことを保証する