78

-.difference()セットの違いは何ですか?明らかに、構文は同じではありません。1 つは二項演算子で、もう 1 つはインスタンス メソッドです。ほかに何か?

s1 = set([1,2,3])
s2 = set([3,4,5])

>>> s1 - s2
set([1, 2])
>>> s1.difference(s2)
set([1, 2])
4

3 に答える 3

19

一見すると、ドキュメントからは明らかではないかもしれませんが、段落の奥深くに埋め込まれているのは、メソッド呼び出しとオペレーター バージョンを区別するためのものです。

union()、intersection()、difference()、および symmetric_difference()、issubset()、および issuperset() メソッドの非演算子バージョンは、任意の iterable を引数として受け入れることに注意してください。対照的に、対応する演算子ベースでは、引数がセットである必要があります。これによりset('abc') & 'cbs'、より読みやすいset('abc').intersection('cbs').

于 2015-06-22T18:10:17.630 に答える
14

ドキュメントは、違いが複数のセットを取る可能性があることを示唆しているように見えるため、次のような場合により効率的で明確になる可能性があります。

s1 = set([1, 2, 3, 4])
s2 = set([2, 5])
s3 = set([3, 6])
s1.difference(s2, s3) # instead of s1 - s2 - s3

しかし、検証するためにいくつかのテストをお勧めします。

于 2015-06-22T18:08:48.697 に答える