Linux cpanel.rrshost.in 5.15.0-25-generic #25-Ubuntu SMP Wed Mar 30 15:54:22 UTC 2022 x86_64
Apache
: 109.123.238.221 | : 172.69.17.15
128 Domain
8.2.28
aev999
Terminal
AUTO ROOT
Adminer
Backdoor Destroyer
Linux Exploit
Lock Shell
Lock File
Create User
CREATE RDP
PHP Mailer
BACKCONNECT
HASH IDENTIFIER
README
+ Create Folder
+ Create File
/
usr /
share /
doc /
python2.7 /
html /
library /
[ HOME SHELL ]
Name
Size
Permission
Action
2to3.html
63.71
KB
-rw-r--r--
__builtin__.html
11.79
KB
-rw-r--r--
__future__.html
15.58
KB
-rw-r--r--
__main__.html
8.33
KB
-rw-r--r--
_winreg.html
73.99
KB
-rw-r--r--
abc.html
26.82
KB
-rw-r--r--
aepack.html
15.47
KB
-rw-r--r--
aetools.html
18.79
KB
-rw-r--r--
aetypes.html
27.08
KB
-rw-r--r--
aifc.html
29.59
KB
-rw-r--r--
al.html
22.13
KB
-rw-r--r--
allos.html
35.48
KB
-rw-r--r--
anydbm.html
19.31
KB
-rw-r--r--
archiving.html
10.64
KB
-rw-r--r--
argparse.html
269.59
KB
-rw-r--r--
array.html
35.35
KB
-rw-r--r--
ast.html
42.42
KB
-rw-r--r--
asynchat.html
35.84
KB
-rw-r--r--
asyncore.html
43.22
KB
-rw-r--r--
atexit.html
19.23
KB
-rw-r--r--
audioop.html
41.32
KB
-rw-r--r--
autogil.html
9.77
KB
-rw-r--r--
base64.html
24.8
KB
-rw-r--r--
basehttpserver.html
40.6
KB
-rw-r--r--
bastion.html
13.02
KB
-rw-r--r--
bdb.html
50.06
KB
-rw-r--r--
binascii.html
26.64
KB
-rw-r--r--
binhex.html
12.66
KB
-rw-r--r--
bisect.html
28.52
KB
-rw-r--r--
bsddb.html
32.02
KB
-rw-r--r--
bz2.html
31.92
KB
-rw-r--r--
calendar.html
50.16
KB
-rw-r--r--
carbon.html
54.14
KB
-rw-r--r--
cd.html
35.24
KB
-rw-r--r--
cgi.html
58.4
KB
-rw-r--r--
cgihttpserver.html
15.12
KB
-rw-r--r--
cgitb.html
13.5
KB
-rw-r--r--
chunk.html
17.41
KB
-rw-r--r--
cmath.html
32.41
KB
-rw-r--r--
cmd.html
32.69
KB
-rw-r--r--
code.html
28.92
KB
-rw-r--r--
codecs.html
125.92
KB
-rw-r--r--
codeop.html
16.42
KB
-rw-r--r--
collections.html
150.36
KB
-rw-r--r--
colorpicker.html
9.02
KB
-rw-r--r--
colorsys.html
14.38
KB
-rw-r--r--
commands.html
16.63
KB
-rw-r--r--
compileall.html
21.18
KB
-rw-r--r--
compiler.html
78.14
KB
-rw-r--r--
configparser.html
73.92
KB
-rw-r--r--
constants.html
14.68
KB
-rw-r--r--
contextlib.html
22.91
KB
-rw-r--r--
cookie.html
45.38
KB
-rw-r--r--
cookielib.html
102.78
KB
-rw-r--r--
copy.html
14.21
KB
-rw-r--r--
copy_reg.html
15.82
KB
-rw-r--r--
crypt.html
11.62
KB
-rw-r--r--
crypto.html
8.35
KB
-rw-r--r--
csv.html
82.79
KB
-rw-r--r--
ctypes.html
280.57
KB
-rw-r--r--
curses.ascii.html
28.97
KB
-rw-r--r--
curses.html
200.94
KB
-rw-r--r--
curses.panel.html
18.43
KB
-rw-r--r--
custominterp.html
8.59
KB
-rw-r--r--
datatypes.html
18.84
KB
-rw-r--r--
datetime.html
261.02
KB
-rw-r--r--
dbhash.html
18.4
KB
-rw-r--r--
dbm.html
14.75
KB
-rw-r--r--
debug.html
11.28
KB
-rw-r--r--
decimal.html
239.14
KB
-rw-r--r--
development.html
15.27
KB
-rw-r--r--
difflib.html
96.93
KB
-rw-r--r--
dircache.html
13.66
KB
-rw-r--r--
dis.html
96.52
KB
-rw-r--r--
distribution.html
8.27
KB
-rw-r--r--
distutils.html
10.97
KB
-rw-r--r--
dl.html
19.27
KB
-rw-r--r--
doctest.html
193.18
KB
-rw-r--r--
docxmlrpcserver.html
20.02
KB
-rw-r--r--
dumbdbm.html
16.74
KB
-rw-r--r--
dummy_thread.html
11.04
KB
-rw-r--r--
dummy_threading.html
9.96
KB
-rw-r--r--
easydialogs.html
38.83
KB
-rw-r--r--
email-examples.html
47.2
KB
-rw-r--r--
email.charset.html
32.45
KB
-rw-r--r--
email.encoders.html
14.09
KB
-rw-r--r--
email.errors.html
19.2
KB
-rw-r--r--
email.generator.html
24.78
KB
-rw-r--r--
email.header.html
31.12
KB
-rw-r--r--
email.html
55.3
KB
-rw-r--r--
email.iterators.html
14.22
KB
-rw-r--r--
email.message.html
74.91
KB
-rw-r--r--
email.mime.html
34.51
KB
-rw-r--r--
email.parser.html
37.09
KB
-rw-r--r--
email.utils.html
30.04
KB
-rw-r--r--
ensurepip.html
20.21
KB
-rw-r--r--
errno.html
52.31
KB
-rw-r--r--
exceptions.html
73.4
KB
-rw-r--r--
fcntl.html
27.85
KB
-rw-r--r--
filecmp.html
26.49
KB
-rw-r--r--
fileformats.html
10.21
KB
-rw-r--r--
fileinput.html
29.36
KB
-rw-r--r--
filesys.html
11.55
KB
-rw-r--r--
fl.html
71.58
KB
-rw-r--r--
fm.html
15
KB
-rw-r--r--
fnmatch.html
17.78
KB
-rw-r--r--
formatter.html
43.91
KB
-rw-r--r--
fpectl.html
17.84
KB
-rw-r--r--
fpformat.html
12.65
KB
-rw-r--r--
fractions.html
27.17
KB
-rw-r--r--
framework.html
44.24
KB
-rw-r--r--
frameworks.html
8.11
KB
-rw-r--r--
ftplib.html
56.56
KB
-rw-r--r--
functions.html
216.84
KB
-rw-r--r--
functools.html
31.06
KB
-rw-r--r--
future_builtins.html
15.9
KB
-rw-r--r--
gc.html
30.74
KB
-rw-r--r--
gdbm.html
19.35
KB
-rw-r--r--
gensuitemodule.html
14.54
KB
-rw-r--r--
getopt.html
26.56
KB
-rw-r--r--
getpass.html
12.5
KB
-rw-r--r--
gettext.html
91.32
KB
-rw-r--r--
gl.html
26.71
KB
-rw-r--r--
glob.html
15.42
KB
-rw-r--r--
grp.html
12.33
KB
-rw-r--r--
gzip.html
21.95
KB
-rw-r--r--
hashlib.html
27.4
KB
-rw-r--r--
heapq.html
36.72
KB
-rw-r--r--
hmac.html
15.97
KB
-rw-r--r--
hotshot.html
22.69
KB
-rw-r--r--
htmllib.html
29.9
KB
-rw-r--r--
htmlparser.html
45.11
KB
-rw-r--r--
httplib.html
78.55
KB
-rw-r--r--
i18n.html
10.61
KB
-rw-r--r--
ic.html
22.03
KB
-rw-r--r--
idle.html
45.74
KB
-rw-r--r--
imageop.html
20.94
KB
-rw-r--r--
imaplib.html
69.9
KB
-rw-r--r--
imgfile.html
14.91
KB
-rw-r--r--
imghdr.html
13.43
KB
-rw-r--r--
imp.html
41.48
KB
-rw-r--r--
importlib.html
10.27
KB
-rw-r--r--
imputil.html
36.11
KB
-rw-r--r--
index.html
82.54
KB
-rw-r--r--
inspect.html
64.31
KB
-rw-r--r--
internet.html
26.77
KB
-rw-r--r--
intro.html
9.76
KB
-rw-r--r--
io.html
122.3
KB
-rw-r--r--
ipc.html
17.18
KB
-rw-r--r--
itertools.html
129.91
KB
-rw-r--r--
jpeg.html
15.36
KB
-rw-r--r--
json.html
79.09
KB
-rw-r--r--
keyword.html
9.27
KB
-rw-r--r--
language.html
12.35
KB
-rw-r--r--
linecache.html
12.7
KB
-rw-r--r--
locale.html
68.54
KB
-rw-r--r--
logging.config.html
82.23
KB
-rw-r--r--
logging.handlers.html
91.96
KB
-rw-r--r--
logging.html
123.15
KB
-rw-r--r--
mac.html
24.49
KB
-rw-r--r--
macos.html
18.51
KB
-rw-r--r--
macosa.html
14.55
KB
-rw-r--r--
macostools.html
19.67
KB
-rw-r--r--
macpath.html
9.19
KB
-rw-r--r--
mailbox.html
185.53
KB
-rw-r--r--
mailcap.html
15.3
KB
-rw-r--r--
markup.html
20.37
KB
-rw-r--r--
marshal.html
19.88
KB
-rw-r--r--
math.html
50.52
KB
-rw-r--r--
md5.html
16.65
KB
-rw-r--r--
mhlib.html
30.04
KB
-rw-r--r--
mimetools.html
23.84
KB
-rw-r--r--
mimetypes.html
35.82
KB
-rw-r--r--
mimewriter.html
18.19
KB
-rw-r--r--
mimify.html
16.96
KB
-rw-r--r--
miniaeframe.html
14.5
KB
-rw-r--r--
misc.html
7.77
KB
-rw-r--r--
mm.html
10.19
KB
-rw-r--r--
mmap.html
33.52
KB
-rw-r--r--
modulefinder.html
19.85
KB
-rw-r--r--
modules.html
9.68
KB
-rw-r--r--
msilib.html
72.78
KB
-rw-r--r--
msvcrt.html
24.1
KB
-rw-r--r--
multifile.html
28.82
KB
-rw-r--r--
multiprocessing.html
423.97
KB
-rw-r--r--
mutex.html
13.56
KB
-rw-r--r--
netdata.html
19.28
KB
-rw-r--r--
netrc.html
15.51
KB
-rw-r--r--
new.html
16.1
KB
-rw-r--r--
nis.html
13.19
KB
-rw-r--r--
nntplib.html
51.08
KB
-rw-r--r--
numbers.html
40.91
KB
-rw-r--r--
numeric.html
14.85
KB
-rw-r--r--
operator.html
118.32
KB
-rw-r--r--
optparse.html
251.08
KB
-rw-r--r--
os.html
270.49
KB
-rw-r--r--
os.path.html
48.87
KB
-rw-r--r--
ossaudiodev.html
49.79
KB
-rw-r--r--
othergui.html
9.98
KB
-rw-r--r--
parser.html
44.52
KB
-rw-r--r--
pdb.html
41.44
KB
-rw-r--r--
persistence.html
16.25
KB
-rw-r--r--
pickle.html
107.94
KB
-rw-r--r--
pickletools.html
13.21
KB
-rw-r--r--
pipes.html
21.85
KB
-rw-r--r--
pkgutil.html
30.59
KB
-rw-r--r--
platform.html
40.14
KB
-rw-r--r--
plistlib.html
20.96
KB
-rw-r--r--
popen2.html
30.13
KB
-rw-r--r--
poplib.html
27.93
KB
-rw-r--r--
posix.html
17.27
KB
-rw-r--r--
posixfile.html
23.68
KB
-rw-r--r--
pprint.html
36.42
KB
-rw-r--r--
profile.html
76.65
KB
-rw-r--r--
pty.html
11.42
KB
-rw-r--r--
pwd.html
13.53
KB
-rw-r--r--
py_compile.html
13.33
KB
-rw-r--r--
pyclbr.html
18.14
KB
-rw-r--r--
pydoc.html
14.33
KB
-rw-r--r--
pyexpat.html
93.28
KB
-rw-r--r--
python.html
13.53
KB
-rw-r--r--
queue.html
29.64
KB
-rw-r--r--
quopri.html
14.5
KB
-rw-r--r--
random.html
47.78
KB
-rw-r--r--
re.html
163.11
KB
-rw-r--r--
readline.html
41.2
KB
-rw-r--r--
repr.html
24.57
KB
-rw-r--r--
resource.html
30.86
KB
-rw-r--r--
restricted.html
12.69
KB
-rw-r--r--
rexec.html
43.59
KB
-rw-r--r--
rfc822.html
51.25
KB
-rw-r--r--
rlcompleter.html
15.29
KB
-rw-r--r--
robotparser.html
15.01
KB
-rw-r--r--
runpy.html
23.55
KB
-rw-r--r--
sched.html
21.76
KB
-rw-r--r--
scrolledtext.html
10.67
KB
-rw-r--r--
select.html
50.17
KB
-rw-r--r--
sets.html
39.92
KB
-rw-r--r--
sgi.html
11.09
KB
-rw-r--r--
sgmllib.html
38.77
KB
-rw-r--r--
sha.html
14.55
KB
-rw-r--r--
shelve.html
32.93
KB
-rw-r--r--
shlex.html
38.43
KB
-rw-r--r--
shutil.html
49.49
KB
-rw-r--r--
signal.html
36.52
KB
-rw-r--r--
simplehttpserver.html
21.57
KB
-rw-r--r--
simplexmlrpcserver.html
40.41
KB
-rw-r--r--
site.html
29
KB
-rw-r--r--
smtpd.html
15.64
KB
-rw-r--r--
smtplib.html
51.86
KB
-rw-r--r--
sndhdr.html
12.05
KB
-rw-r--r--
socket.html
126.94
KB
-rw-r--r--
socketserver.html
81.38
KB
-rw-r--r--
someos.html
17.09
KB
-rw-r--r--
spwd.html
12.25
KB
-rw-r--r--
sqlite3.html
154.12
KB
-rw-r--r--
ssl.html
214.5
KB
-rw-r--r--
stat.html
41.11
KB
-rw-r--r--
statvfs.html
13.24
KB
-rw-r--r--
stdtypes.html
309.83
KB
-rw-r--r--
string.html
129.58
KB
-rw-r--r--
stringio.html
21.1
KB
-rw-r--r--
stringprep.html
21.4
KB
-rw-r--r--
strings.html
16.42
KB
-rw-r--r--
struct.html
47.68
KB
-rw-r--r--
subprocess.html
117
KB
-rw-r--r--
sun.html
7.83
KB
-rw-r--r--
sunau.html
35.43
KB
-rw-r--r--
sunaudio.html
21.05
KB
-rw-r--r--
symbol.html
9.06
KB
-rw-r--r--
symtable.html
29.03
KB
-rw-r--r--
sys.html
118.12
KB
-rw-r--r--
sysconfig.html
28.8
KB
-rw-r--r--
syslog.html
21.29
KB
-rw-r--r--
tabnanny.html
12.78
KB
-rw-r--r--
tarfile.html
99.54
KB
-rw-r--r--
telnetlib.html
30.46
KB
-rw-r--r--
tempfile.html
35.02
KB
-rw-r--r--
termios.html
19.22
KB
-rw-r--r--
test.html
61.42
KB
-rw-r--r--
textwrap.html
32.28
KB
-rw-r--r--
thread.html
22.67
KB
-rw-r--r--
threading.html
92.04
KB
-rw-r--r--
time.html
65.55
KB
-rw-r--r--
timeit.html
44.38
KB
-rw-r--r--
tix.html
56.73
KB
-rw-r--r--
tk.html
26.76
KB
-rw-r--r--
tkinter.html
86.67
KB
-rw-r--r--
token.html
27.31
KB
-rw-r--r--
tokenize.html
21.69
KB
-rw-r--r--
trace.html
33.91
KB
-rw-r--r--
traceback.html
44.22
KB
-rw-r--r--
ttk.html
123.83
KB
-rw-r--r--
tty.html
10.95
KB
-rw-r--r--
turtle.html
246.17
KB
-rw-r--r--
types.html
33.66
KB
-rw-r--r--
undoc.html
25.54
KB
-rw-r--r--
unicodedata.html
22.64
KB
-rw-r--r--
unittest.html
246.75
KB
-rw-r--r--
unix.html
11.9
KB
-rw-r--r--
urllib.html
71.61
KB
-rw-r--r--
urllib2.html
128.77
KB
-rw-r--r--
urlparse.html
49.04
KB
-rw-r--r--
user.html
13.41
KB
-rw-r--r--
userdict.html
32.96
KB
-rw-r--r--
uu.html
13.25
KB
-rw-r--r--
uuid.html
33.55
KB
-rw-r--r--
warnings.html
51.86
KB
-rw-r--r--
wave.html
29.08
KB
-rw-r--r--
weakref.html
41.14
KB
-rw-r--r--
webbrowser.html
29.53
KB
-rw-r--r--
whichdb.html
10.44
KB
-rw-r--r--
windows.html
10.37
KB
-rw-r--r--
winsound.html
22.56
KB
-rw-r--r--
wsgiref.html
94.38
KB
-rw-r--r--
xdrlib.html
38.05
KB
-rw-r--r--
xml.dom.html
110.39
KB
-rw-r--r--
xml.dom.minidom.html
45.23
KB
-rw-r--r--
xml.dom.pulldom.html
16.32
KB
-rw-r--r--
xml.etree.elementtree.html
124.2
KB
-rw-r--r--
xml.html
18.76
KB
-rw-r--r--
xml.sax.handler.html
47.5
KB
-rw-r--r--
xml.sax.html
26.04
KB
-rw-r--r--
xml.sax.reader.html
51.4
KB
-rw-r--r--
xml.sax.utils.html
18.11
KB
-rw-r--r--
xmlrpclib.html
71.79
KB
-rw-r--r--
zipfile.html
67.26
KB
-rw-r--r--
zipimport.html
24.32
KB
-rw-r--r--
zlib.html
34.41
KB
-rw-r--r--
Delete
Unzip
Zip
${this.title}
Close
Code Editor : sets.html
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" /> <title>8.7. sets — Unordered collections of unique elements — Python 2.7.18 documentation</title> <link rel="stylesheet" type="text/css" href="../_static/pygments.css" /> <link rel="stylesheet" type="text/css" href="../_static/classic.css" /> <script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js"></script> <script src="../_static/jquery.js"></script> <script src="../_static/underscore.js"></script> <script src="../_static/doctools.js"></script> <script src="../_static/sidebar.js"></script> <link rel="search" type="application/opensearchdescription+xml" title="Search within Python 2.7.18 documentation" href="../_static/opensearch.xml"/> <link rel="author" title="About these documents" href="../about.html" /> <link rel="index" title="Index" href="../genindex.html" /> <link rel="search" title="Search" href="../search.html" /> <link rel="copyright" title="Copyright" href="../copyright.html" /> <link rel="next" title="8.8. sched — Event scheduler" href="sched.html" /> <link rel="prev" title="8.6. array — Efficient arrays of numeric values" href="array.html" /> <link rel="shortcut icon" type="image/png" href="../_static/py.png" /> <link rel="canonical" href="file:///usr/share/doc/python2.7/html/library/sets.html" /> <script type="text/javascript" src="../_static/copybutton.js"></script> </head><body> <div id="outdated-warning" style="padding: .5em; text-align: center; background-color: #FFBABA; color: #6A0E0E;"> This document is for an old version of Python that is <a href="https://devguide.python.org/devcycle/#end-of-life-branches">no longer supported</a>. You should install the python3 and python3-doc packages and read the <a href="file:///usr/share/doc/python3-doc/html/library/sets.html"> Python documentation for the Python3 version packaged in this release</a>. </div> <div class="related" role="navigation" aria-label="related navigation"> <h3>Navigation</h3> <ul> <li class="right" style="margin-right: 10px"> <a href="../genindex.html" title="General Index" accesskey="I">index</a></li> <li class="right" > <a href="../py-modindex.html" title="Python Module Index" >modules</a> |</li> <li class="right" > <a href="sched.html" title="8.8. sched — Event scheduler" accesskey="N">next</a> |</li> <li class="right" > <a href="array.html" title="8.6. array — Efficient arrays of numeric values" accesskey="P">previous</a> |</li> <li><img src="../_static/py.png" alt="" style="vertical-align: middle; margin-top: -1px"/></li> <li><a href="https://www.python.org/">Python</a> »</li> <li> <a href="../index.html">Python 2.7.18 documentation</a> » </li> <li class="nav-item nav-item-1"><a href="index.html" >The Python Standard Library</a> »</li> <li class="nav-item nav-item-2"><a href="datatypes.html" accesskey="U"><span class="section-number">8. </span>Data Types</a> »</li> <li class="nav-item nav-item-this"><a href=""><span class="section-number">8.7. </span><code class="xref py py-mod docutils literal notranslate"><span class="pre">sets</span></code> — Unordered collections of unique elements</a></li> </ul> </div> <div class="document"> <div class="documentwrapper"> <div class="bodywrapper"> <div class="body" role="main"> <section id="module-sets"> <span id="sets-unordered-collections-of-unique-elements"></span><h1><span class="section-number">8.7. </span><a class="reference internal" href="#module-sets" title="sets: Implementation of sets of unique elements. (deprecated)"><code class="xref py py-mod docutils literal notranslate"><span class="pre">sets</span></code></a> — Unordered collections of unique elements<a class="headerlink" href="#module-sets" title="Permalink to this headline">¶</a></h1> <div class="versionadded"> <p><span class="versionmodified added">New in version 2.3.</span></p> </div> <div class="deprecated"> <p><span class="versionmodified deprecated">Deprecated since version 2.6: </span>The built-in <a class="reference internal" href="stdtypes.html#set" title="set"><code class="xref py py-class docutils literal notranslate"><span class="pre">set</span></code></a>/<a class="reference internal" href="stdtypes.html#frozenset" title="frozenset"><code class="xref py py-class docutils literal notranslate"><span class="pre">frozenset</span></code></a> types replace this module.</p> </div> <p>The <a class="reference internal" href="#module-sets" title="sets: Implementation of sets of unique elements. (deprecated)"><code class="xref py py-mod docutils literal notranslate"><span class="pre">sets</span></code></a> module provides classes for constructing and manipulating unordered collections of unique elements. Common uses include membership testing, removing duplicates from a sequence, and computing standard math operations on sets such as intersection, union, difference, and symmetric difference.</p> <p>Like other collections, sets support <code class="docutils literal notranslate"><span class="pre">x</span> <span class="pre">in</span> <span class="pre">set</span></code>, <code class="docutils literal notranslate"><span class="pre">len(set)</span></code>, and <code class="docutils literal notranslate"><span class="pre">for</span> <span class="pre">x</span> <span class="pre">in</span> <span class="pre">set</span></code>. Being an unordered collection, sets do not record element position or order of insertion. Accordingly, sets do not support indexing, slicing, or other sequence-like behavior.</p> <p>Most set applications use the <a class="reference internal" href="#sets.Set" title="sets.Set"><code class="xref py py-class docutils literal notranslate"><span class="pre">Set</span></code></a> class which provides every set method except for <code class="xref py py-meth docutils literal notranslate"><span class="pre">__hash__()</span></code>. For advanced applications requiring a hash method, the <a class="reference internal" href="#sets.ImmutableSet" title="sets.ImmutableSet"><code class="xref py py-class docutils literal notranslate"><span class="pre">ImmutableSet</span></code></a> class adds a <code class="xref py py-meth docutils literal notranslate"><span class="pre">__hash__()</span></code> method but omits methods which alter the contents of the set. Both <a class="reference internal" href="#sets.Set" title="sets.Set"><code class="xref py py-class docutils literal notranslate"><span class="pre">Set</span></code></a> and <a class="reference internal" href="#sets.ImmutableSet" title="sets.ImmutableSet"><code class="xref py py-class docutils literal notranslate"><span class="pre">ImmutableSet</span></code></a> derive from <code class="xref py py-class docutils literal notranslate"><span class="pre">BaseSet</span></code>, an abstract class useful for determining whether something is a set: <code class="docutils literal notranslate"><span class="pre">isinstance(obj,</span> <span class="pre">BaseSet)</span></code>.</p> <p>The set classes are implemented using dictionaries. Accordingly, the requirements for set elements are the same as those for dictionary keys; namely, that the element defines both <code class="xref py py-meth docutils literal notranslate"><span class="pre">__eq__()</span></code> and <code class="xref py py-meth docutils literal notranslate"><span class="pre">__hash__()</span></code>. As a result, sets cannot contain mutable elements such as lists or dictionaries. However, they can contain immutable collections such as tuples or instances of <a class="reference internal" href="#sets.ImmutableSet" title="sets.ImmutableSet"><code class="xref py py-class docutils literal notranslate"><span class="pre">ImmutableSet</span></code></a>. For convenience in implementing sets of sets, inner sets are automatically converted to immutable form, for example, <code class="docutils literal notranslate"><span class="pre">Set([Set(['dog'])])</span></code> is transformed to <code class="docutils literal notranslate"><span class="pre">Set([ImmutableSet(['dog'])])</span></code>.</p> <dl class="py class"> <dt class="sig sig-object py" id="sets.Set"> <em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">sets.</span></span><span class="sig-name descname"><span class="pre">Set</span></span><span class="sig-paren">(</span><span class="optional">[</span><em class="sig-param"><span class="n"><span class="pre">iterable</span></span></em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#sets.Set" title="Permalink to this definition">¶</a></dt> <dd><p>Constructs a new empty <a class="reference internal" href="#sets.Set" title="sets.Set"><code class="xref py py-class docutils literal notranslate"><span class="pre">Set</span></code></a> object. If the optional <em>iterable</em> parameter is supplied, updates the set with elements obtained from iteration. All of the elements in <em>iterable</em> should be immutable or be transformable to an immutable using the protocol described in section <a class="reference internal" href="#immutable-transforms"><span class="std std-ref">Protocol for automatic conversion to immutable</span></a>.</p> </dd></dl> <dl class="py class"> <dt class="sig sig-object py" id="sets.ImmutableSet"> <em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">sets.</span></span><span class="sig-name descname"><span class="pre">ImmutableSet</span></span><span class="sig-paren">(</span><span class="optional">[</span><em class="sig-param"><span class="n"><span class="pre">iterable</span></span></em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#sets.ImmutableSet" title="Permalink to this definition">¶</a></dt> <dd><p>Constructs a new empty <a class="reference internal" href="#sets.ImmutableSet" title="sets.ImmutableSet"><code class="xref py py-class docutils literal notranslate"><span class="pre">ImmutableSet</span></code></a> object. If the optional <em>iterable</em> parameter is supplied, updates the set with elements obtained from iteration. All of the elements in <em>iterable</em> should be immutable or be transformable to an immutable using the protocol described in section <a class="reference internal" href="#immutable-transforms"><span class="std std-ref">Protocol for automatic conversion to immutable</span></a>.</p> <p>Because <a class="reference internal" href="#sets.ImmutableSet" title="sets.ImmutableSet"><code class="xref py py-class docutils literal notranslate"><span class="pre">ImmutableSet</span></code></a> objects provide a <code class="xref py py-meth docutils literal notranslate"><span class="pre">__hash__()</span></code> method, they can be used as set elements or as dictionary keys. <a class="reference internal" href="#sets.ImmutableSet" title="sets.ImmutableSet"><code class="xref py py-class docutils literal notranslate"><span class="pre">ImmutableSet</span></code></a> objects do not have methods for adding or removing elements, so all of the elements must be known when the constructor is called.</p> </dd></dl> <section id="set-objects"> <span id="id1"></span><h2><span class="section-number">8.7.1. </span>Set Objects<a class="headerlink" href="#set-objects" title="Permalink to this headline">¶</a></h2> <p>Instances of <a class="reference internal" href="#sets.Set" title="sets.Set"><code class="xref py py-class docutils literal notranslate"><span class="pre">Set</span></code></a> and <a class="reference internal" href="#sets.ImmutableSet" title="sets.ImmutableSet"><code class="xref py py-class docutils literal notranslate"><span class="pre">ImmutableSet</span></code></a> both provide the following operations:</p> <table class="docutils align-default"> <colgroup> <col style="width: 41%" /> <col style="width: 16%" /> <col style="width: 43%" /> </colgroup> <thead> <tr class="row-odd"><th class="head"><p>Operation</p></th> <th class="head"><p>Equivalent</p></th> <th class="head"><p>Result</p></th> </tr> </thead> <tbody> <tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">len(s)</span></code></p></td> <td></td> <td><p>number of elements in set <em>s</em> (cardinality)</p></td> </tr> <tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">x</span> <span class="pre">in</span> <span class="pre">s</span></code></p></td> <td></td> <td><p>test <em>x</em> for membership in <em>s</em></p></td> </tr> <tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">x</span> <span class="pre">not</span> <span class="pre">in</span> <span class="pre">s</span></code></p></td> <td></td> <td><p>test <em>x</em> for non-membership in <em>s</em></p></td> </tr> <tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">s.issubset(t)</span></code></p></td> <td><p><code class="docutils literal notranslate"><span class="pre">s</span> <span class="pre"><=</span> <span class="pre">t</span></code></p></td> <td><p>test whether every element in <em>s</em> is in <em>t</em></p></td> </tr> <tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">s.issuperset(t)</span></code></p></td> <td><p><code class="docutils literal notranslate"><span class="pre">s</span> <span class="pre">>=</span> <span class="pre">t</span></code></p></td> <td><p>test whether every element in <em>t</em> is in <em>s</em></p></td> </tr> <tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">s.union(t)</span></code></p></td> <td><p><code class="docutils literal notranslate"><span class="pre">s</span> <span class="pre">|</span> <span class="pre">t</span></code></p></td> <td><p>new set with elements from both <em>s</em> and <em>t</em></p></td> </tr> <tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">s.intersection(t)</span></code></p></td> <td><p><code class="docutils literal notranslate"><span class="pre">s</span> <span class="pre">&</span> <span class="pre">t</span></code></p></td> <td><p>new set with elements common to <em>s</em> and <em>t</em></p></td> </tr> <tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">s.difference(t)</span></code></p></td> <td><p><code class="docutils literal notranslate"><span class="pre">s</span> <span class="pre">-</span> <span class="pre">t</span></code></p></td> <td><p>new set with elements in <em>s</em> but not in <em>t</em></p></td> </tr> <tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">s.symmetric_difference(t)</span></code></p></td> <td><p><code class="docutils literal notranslate"><span class="pre">s</span> <span class="pre">^</span> <span class="pre">t</span></code></p></td> <td><p>new set with elements in either <em>s</em> or <em>t</em> but not both</p></td> </tr> <tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">s.copy()</span></code></p></td> <td></td> <td><p>new set with a shallow copy of <em>s</em></p></td> </tr> </tbody> </table> <p>Note, the non-operator versions of <code class="xref py py-meth docutils literal notranslate"><span class="pre">union()</span></code>, <code class="xref py py-meth docutils literal notranslate"><span class="pre">intersection()</span></code>, <code class="xref py py-meth docutils literal notranslate"><span class="pre">difference()</span></code>, and <code class="xref py py-meth docutils literal notranslate"><span class="pre">symmetric_difference()</span></code> will accept any iterable as an argument. In contrast, their operator based counterparts require their arguments to be sets. This precludes error-prone constructions like <code class="docutils literal notranslate"><span class="pre">Set('abc')</span> <span class="pre">&</span> <span class="pre">'cbs'</span></code> in favor of the more readable <code class="docutils literal notranslate"><span class="pre">Set('abc').intersection('cbs')</span></code>.</p> <div class="versionchanged"> <p><span class="versionmodified changed">Changed in version 2.3.1: </span>Formerly all arguments were required to be sets.</p> </div> <p>In addition, both <a class="reference internal" href="#sets.Set" title="sets.Set"><code class="xref py py-class docutils literal notranslate"><span class="pre">Set</span></code></a> and <a class="reference internal" href="#sets.ImmutableSet" title="sets.ImmutableSet"><code class="xref py py-class docutils literal notranslate"><span class="pre">ImmutableSet</span></code></a> support set to set comparisons. Two sets are equal if and only if every element of each set is contained in the other (each is a subset of the other). A set is less than another set if and only if the first set is a proper subset of the second set (is a subset, but is not equal). A set is greater than another set if and only if the first set is a proper superset of the second set (is a superset, but is not equal).</p> <p>The subset and equality comparisons do not generalize to a complete ordering function. For example, any two disjoint sets are not equal and are not subsets of each other, so <em>all</em> of the following return <code class="docutils literal notranslate"><span class="pre">False</span></code>: <code class="docutils literal notranslate"><span class="pre">a<b</span></code>, <code class="docutils literal notranslate"><span class="pre">a==b</span></code>, or <code class="docutils literal notranslate"><span class="pre">a>b</span></code>. Accordingly, sets do not implement the <code class="xref py py-meth docutils literal notranslate"><span class="pre">__cmp__()</span></code> method.</p> <p>Since sets only define partial ordering (subset relationships), the output of the <code class="xref py py-meth docutils literal notranslate"><span class="pre">list.sort()</span></code> method is undefined for lists of sets.</p> <p>The following table lists operations available in <a class="reference internal" href="#sets.ImmutableSet" title="sets.ImmutableSet"><code class="xref py py-class docutils literal notranslate"><span class="pre">ImmutableSet</span></code></a> but not found in <a class="reference internal" href="#sets.Set" title="sets.Set"><code class="xref py py-class docutils literal notranslate"><span class="pre">Set</span></code></a>:</p> <table class="docutils align-default"> <colgroup> <col style="width: 30%" /> <col style="width: 70%" /> </colgroup> <thead> <tr class="row-odd"><th class="head"><p>Operation</p></th> <th class="head"><p>Result</p></th> </tr> </thead> <tbody> <tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">hash(s)</span></code></p></td> <td><p>returns a hash value for <em>s</em></p></td> </tr> </tbody> </table> <p>The following table lists operations available in <a class="reference internal" href="#sets.Set" title="sets.Set"><code class="xref py py-class docutils literal notranslate"><span class="pre">Set</span></code></a> but not found in <a class="reference internal" href="#sets.ImmutableSet" title="sets.ImmutableSet"><code class="xref py py-class docutils literal notranslate"><span class="pre">ImmutableSet</span></code></a>:</p> <table class="docutils align-default"> <colgroup> <col style="width: 45%" /> <col style="width: 15%" /> <col style="width: 39%" /> </colgroup> <thead> <tr class="row-odd"><th class="head"><p>Operation</p></th> <th class="head"><p>Equivalent</p></th> <th class="head"><p>Result</p></th> </tr> </thead> <tbody> <tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">s.update(t)</span></code></p></td> <td><p><em>s</em> |= <em>t</em></p></td> <td><p>return set <em>s</em> with elements added from <em>t</em></p></td> </tr> <tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">s.intersection_update(t)</span></code></p></td> <td><p><em>s</em> &= <em>t</em></p></td> <td><p>return set <em>s</em> keeping only elements also found in <em>t</em></p></td> </tr> <tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">s.difference_update(t)</span></code></p></td> <td><p><em>s</em> -= <em>t</em></p></td> <td><p>return set <em>s</em> after removing elements found in <em>t</em></p></td> </tr> <tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">s.symmetric_difference_update(t)</span></code></p></td> <td><p><em>s</em> ^= <em>t</em></p></td> <td><p>return set <em>s</em> with elements from <em>s</em> or <em>t</em> but not both</p></td> </tr> <tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">s.add(x)</span></code></p></td> <td></td> <td><p>add element <em>x</em> to set <em>s</em></p></td> </tr> <tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">s.remove(x)</span></code></p></td> <td></td> <td><p>remove <em>x</em> from set <em>s</em>; raises <code class="xref py py-exc docutils literal notranslate"><span class="pre">KeyError</span></code> if not present</p></td> </tr> <tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">s.discard(x)</span></code></p></td> <td></td> <td><p>removes <em>x</em> from set <em>s</em> if present</p></td> </tr> <tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">s.pop()</span></code></p></td> <td></td> <td><p>remove and return an arbitrary element from <em>s</em>; raises <code class="xref py py-exc docutils literal notranslate"><span class="pre">KeyError</span></code> if empty</p></td> </tr> <tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">s.clear()</span></code></p></td> <td></td> <td><p>remove all elements from set <em>s</em></p></td> </tr> </tbody> </table> <p>Note, the non-operator versions of <code class="xref py py-meth docutils literal notranslate"><span class="pre">update()</span></code>, <code class="xref py py-meth docutils literal notranslate"><span class="pre">intersection_update()</span></code>, <code class="xref py py-meth docutils literal notranslate"><span class="pre">difference_update()</span></code>, and <code class="xref py py-meth docutils literal notranslate"><span class="pre">symmetric_difference_update()</span></code> will accept any iterable as an argument.</p> <div class="versionchanged"> <p><span class="versionmodified changed">Changed in version 2.3.1: </span>Formerly all arguments were required to be sets.</p> </div> <p>Also note, the module also includes a <code class="xref py py-meth docutils literal notranslate"><span class="pre">union_update()</span></code> method which is an alias for <code class="xref py py-meth docutils literal notranslate"><span class="pre">update()</span></code>. The method is included for backwards compatibility. Programmers should prefer the <code class="xref py py-meth docutils literal notranslate"><span class="pre">update()</span></code> method because it is supported by the built-in <a class="reference internal" href="stdtypes.html#set" title="set"><code class="xref py py-class docutils literal notranslate"><span class="pre">set()</span></code></a> and <a class="reference internal" href="stdtypes.html#frozenset" title="frozenset"><code class="xref py py-class docutils literal notranslate"><span class="pre">frozenset()</span></code></a> types.</p> </section> <section id="example"> <span id="set-example"></span><h2><span class="section-number">8.7.2. </span>Example<a class="headerlink" href="#example" title="Permalink to this headline">¶</a></h2> <div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="kn">from</span> <span class="nn">sets</span> <span class="kn">import</span> <span class="n">Set</span> <span class="gp">>>> </span><span class="n">engineers</span> <span class="o">=</span> <span class="n">Set</span><span class="p">([</span><span class="s1">'John'</span><span class="p">,</span> <span class="s1">'Jane'</span><span class="p">,</span> <span class="s1">'Jack'</span><span class="p">,</span> <span class="s1">'Janice'</span><span class="p">])</span> <span class="gp">>>> </span><span class="n">programmers</span> <span class="o">=</span> <span class="n">Set</span><span class="p">([</span><span class="s1">'Jack'</span><span class="p">,</span> <span class="s1">'Sam'</span><span class="p">,</span> <span class="s1">'Susan'</span><span class="p">,</span> <span class="s1">'Janice'</span><span class="p">])</span> <span class="gp">>>> </span><span class="n">managers</span> <span class="o">=</span> <span class="n">Set</span><span class="p">([</span><span class="s1">'Jane'</span><span class="p">,</span> <span class="s1">'Jack'</span><span class="p">,</span> <span class="s1">'Susan'</span><span class="p">,</span> <span class="s1">'Zack'</span><span class="p">])</span> <span class="gp">>>> </span><span class="n">employees</span> <span class="o">=</span> <span class="n">engineers</span> <span class="o">|</span> <span class="n">programmers</span> <span class="o">|</span> <span class="n">managers</span> <span class="c1"># union</span> <span class="gp">>>> </span><span class="n">engineering_management</span> <span class="o">=</span> <span class="n">engineers</span> <span class="o">&</span> <span class="n">managers</span> <span class="c1"># intersection</span> <span class="gp">>>> </span><span class="n">fulltime_management</span> <span class="o">=</span> <span class="n">managers</span> <span class="o">-</span> <span class="n">engineers</span> <span class="o">-</span> <span class="n">programmers</span> <span class="c1"># difference</span> <span class="gp">>>> </span><span class="n">engineers</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="s1">'Marvin'</span><span class="p">)</span> <span class="c1"># add element</span> <span class="gp">>>> </span><span class="nb">print</span> <span class="n">engineers</span> <span class="go">Set(['Jane', 'Marvin', 'Janice', 'John', 'Jack'])</span> <span class="gp">>>> </span><span class="n">employees</span><span class="o">.</span><span class="n">issuperset</span><span class="p">(</span><span class="n">engineers</span><span class="p">)</span> <span class="c1"># superset test</span> <span class="go">False</span> <span class="gp">>>> </span><span class="n">employees</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="n">engineers</span><span class="p">)</span> <span class="c1"># update from another set</span> <span class="gp">>>> </span><span class="n">employees</span><span class="o">.</span><span class="n">issuperset</span><span class="p">(</span><span class="n">engineers</span><span class="p">)</span> <span class="go">True</span> <span class="gp">>>> </span><span class="k">for</span> <span class="n">group</span> <span class="ow">in</span> <span class="p">[</span><span class="n">engineers</span><span class="p">,</span> <span class="n">programmers</span><span class="p">,</span> <span class="n">managers</span><span class="p">,</span> <span class="n">employees</span><span class="p">]:</span> <span class="gp">... </span> <span class="n">group</span><span class="o">.</span><span class="n">discard</span><span class="p">(</span><span class="s1">'Susan'</span><span class="p">)</span> <span class="c1"># unconditionally remove element</span> <span class="gp">... </span> <span class="nb">print</span> <span class="n">group</span> <span class="gp">...</span> <span class="go">Set(['Jane', 'Marvin', 'Janice', 'John', 'Jack'])</span> <span class="go">Set(['Janice', 'Jack', 'Sam'])</span> <span class="go">Set(['Jane', 'Zack', 'Jack'])</span> <span class="go">Set(['Jack', 'Sam', 'Jane', 'Marvin', 'Janice', 'John', 'Zack'])</span> </pre></div> </div> </section> <section id="protocol-for-automatic-conversion-to-immutable"> <span id="immutable-transforms"></span><h2><span class="section-number">8.7.3. </span>Protocol for automatic conversion to immutable<a class="headerlink" href="#protocol-for-automatic-conversion-to-immutable" title="Permalink to this headline">¶</a></h2> <p>Sets can only contain immutable elements. For convenience, mutable <a class="reference internal" href="#sets.Set" title="sets.Set"><code class="xref py py-class docutils literal notranslate"><span class="pre">Set</span></code></a> objects are automatically copied to an <a class="reference internal" href="#sets.ImmutableSet" title="sets.ImmutableSet"><code class="xref py py-class docutils literal notranslate"><span class="pre">ImmutableSet</span></code></a> before being added as a set element.</p> <p>The mechanism is to always add a <a class="reference internal" href="../glossary.html#term-hashable"><span class="xref std std-term">hashable</span></a> element, or if it is not hashable, the element is checked to see if it has an <code class="xref py py-meth docutils literal notranslate"><span class="pre">__as_immutable__()</span></code> method which returns an immutable equivalent.</p> <p>Since <a class="reference internal" href="#sets.Set" title="sets.Set"><code class="xref py py-class docutils literal notranslate"><span class="pre">Set</span></code></a> objects have a <code class="xref py py-meth docutils literal notranslate"><span class="pre">__as_immutable__()</span></code> method returning an instance of <a class="reference internal" href="#sets.ImmutableSet" title="sets.ImmutableSet"><code class="xref py py-class docutils literal notranslate"><span class="pre">ImmutableSet</span></code></a>, it is possible to construct sets of sets.</p> <p>A similar mechanism is needed by the <code class="xref py py-meth docutils literal notranslate"><span class="pre">__contains__()</span></code> and <code class="xref py py-meth docutils literal notranslate"><span class="pre">remove()</span></code> methods which need to hash an element to check for membership in a set. Those methods check an element for hashability and, if not, check for a <code class="xref py py-meth docutils literal notranslate"><span class="pre">__as_temporarily_immutable__()</span></code> method which returns the element wrapped by a class that provides temporary methods for <code class="xref py py-meth docutils literal notranslate"><span class="pre">__hash__()</span></code>, <code class="xref py py-meth docutils literal notranslate"><span class="pre">__eq__()</span></code>, and <code class="xref py py-meth docutils literal notranslate"><span class="pre">__ne__()</span></code>.</p> <p>The alternate mechanism spares the need to build a separate copy of the original mutable object.</p> <p><a class="reference internal" href="#sets.Set" title="sets.Set"><code class="xref py py-class docutils literal notranslate"><span class="pre">Set</span></code></a> objects implement the <code class="xref py py-meth docutils literal notranslate"><span class="pre">__as_temporarily_immutable__()</span></code> method which returns the <a class="reference internal" href="#sets.Set" title="sets.Set"><code class="xref py py-class docutils literal notranslate"><span class="pre">Set</span></code></a> object wrapped by a new class <code class="xref py py-class docutils literal notranslate"><span class="pre">_TemporarilyImmutableSet</span></code>.</p> <p>The two mechanisms for adding hashability are normally invisible to the user; however, a conflict can arise in a multi-threaded environment where one thread is updating a set while another has temporarily wrapped it in <code class="xref py py-class docutils literal notranslate"><span class="pre">_TemporarilyImmutableSet</span></code>. In other words, sets of mutable sets are not thread-safe.</p> </section> <section id="comparison-to-the-built-in-set-types"> <span id="comparison-to-builtin-set"></span><h2><span class="section-number">8.7.4. </span>Comparison to the built-in <a class="reference internal" href="stdtypes.html#set" title="set"><code class="xref py py-class docutils literal notranslate"><span class="pre">set</span></code></a> types<a class="headerlink" href="#comparison-to-the-built-in-set-types" title="Permalink to this headline">¶</a></h2> <p>The built-in <a class="reference internal" href="stdtypes.html#set" title="set"><code class="xref py py-class docutils literal notranslate"><span class="pre">set</span></code></a> and <a class="reference internal" href="stdtypes.html#frozenset" title="frozenset"><code class="xref py py-class docutils literal notranslate"><span class="pre">frozenset</span></code></a> types were designed based on lessons learned from the <a class="reference internal" href="#module-sets" title="sets: Implementation of sets of unique elements. (deprecated)"><code class="xref py py-mod docutils literal notranslate"><span class="pre">sets</span></code></a> module. The key differences are:</p> <ul class="simple"> <li><p><a class="reference internal" href="#sets.Set" title="sets.Set"><code class="xref py py-class docutils literal notranslate"><span class="pre">Set</span></code></a> and <a class="reference internal" href="#sets.ImmutableSet" title="sets.ImmutableSet"><code class="xref py py-class docutils literal notranslate"><span class="pre">ImmutableSet</span></code></a> were renamed to <a class="reference internal" href="stdtypes.html#set" title="set"><code class="xref py py-class docutils literal notranslate"><span class="pre">set</span></code></a> and <a class="reference internal" href="stdtypes.html#frozenset" title="frozenset"><code class="xref py py-class docutils literal notranslate"><span class="pre">frozenset</span></code></a>.</p></li> <li><p>There is no equivalent to <code class="xref py py-class docutils literal notranslate"><span class="pre">BaseSet</span></code>. Instead, use <code class="docutils literal notranslate"><span class="pre">isinstance(x,</span> <span class="pre">(set,</span> <span class="pre">frozenset))</span></code>.</p></li> <li><p>The hash algorithm for the built-ins performs significantly better (fewer collisions) for most datasets.</p></li> <li><p>The built-in versions have more space efficient pickles.</p></li> <li><p>The built-in versions do not have a <code class="xref py py-meth docutils literal notranslate"><span class="pre">union_update()</span></code> method. Instead, use the <code class="xref py py-meth docutils literal notranslate"><span class="pre">update()</span></code> method which is equivalent.</p></li> <li><p>The built-in versions do not have a <code class="docutils literal notranslate"><span class="pre">_repr(sorted=True)</span></code> method. Instead, use the built-in <a class="reference internal" href="functions.html#repr" title="repr"><code class="xref py py-func docutils literal notranslate"><span class="pre">repr()</span></code></a> and <a class="reference internal" href="functions.html#sorted" title="sorted"><code class="xref py py-func docutils literal notranslate"><span class="pre">sorted()</span></code></a> functions: <code class="docutils literal notranslate"><span class="pre">repr(sorted(s))</span></code>.</p></li> <li><p>The built-in version does not have a protocol for automatic conversion to immutable. Many found this feature to be confusing and no one in the community reported having found real uses for it.</p></li> </ul> </section> </section> <div class="clearer"></div> </div> </div> </div> <div class="sphinxsidebar" role="navigation" aria-label="main navigation"> <div class="sphinxsidebarwrapper"> <h3><a href="../contents.html">Table of Contents</a></h3> <ul> <li><a class="reference internal" href="#">8.7. <code class="xref py py-mod docutils literal notranslate"><span class="pre">sets</span></code> — Unordered collections of unique elements</a><ul> <li><a class="reference internal" href="#set-objects">8.7.1. Set Objects</a></li> <li><a class="reference internal" href="#example">8.7.2. Example</a></li> <li><a class="reference internal" href="#protocol-for-automatic-conversion-to-immutable">8.7.3. Protocol for automatic conversion to immutable</a></li> <li><a class="reference internal" href="#comparison-to-the-built-in-set-types">8.7.4. Comparison to the built-in <code class="xref py py-class docutils literal notranslate"><span class="pre">set</span></code> types</a></li> </ul> </li> </ul> <h4>Previous topic</h4> <p class="topless"><a href="array.html" title="previous chapter"><span class="section-number">8.6. </span><code class="xref py py-mod docutils literal notranslate"><span class="pre">array</span></code> — Efficient arrays of numeric values</a></p> <h4>Next topic</h4> <p class="topless"><a href="sched.html" title="next chapter"><span class="section-number">8.8. </span><code class="xref py py-mod docutils literal notranslate"><span class="pre">sched</span></code> — Event scheduler</a></p> <div role="note" aria-label="source link"> <h3>This Page</h3> <ul class="this-page-menu"> <li><a href="../_sources/library/sets.rst.txt" rel="nofollow">Show Source</a></li> </ul> </div> <div id="searchbox" style="display: none" role="search"> <h3 id="searchlabel">Quick search</h3> <div class="searchformwrapper"> <form class="search" action="../search.html" method="get"> <input type="text" name="q" aria-labelledby="searchlabel" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"/> <input type="submit" value="Go" /> </form> </div> </div> <script>$('#searchbox').show(0);</script> </div> </div> <div class="clearer"></div> </div> <div class="related" role="navigation" aria-label="related navigation"> <h3>Navigation</h3> <ul> <li class="right" style="margin-right: 10px"> <a href="../genindex.html" title="General Index" >index</a></li> <li class="right" > <a href="../py-modindex.html" title="Python Module Index" >modules</a> |</li> <li class="right" > <a href="sched.html" title="8.8. sched — Event scheduler" >next</a> |</li> <li class="right" > <a href="array.html" title="8.6. array — Efficient arrays of numeric values" >previous</a> |</li> <li><img src="../_static/py.png" alt="" style="vertical-align: middle; margin-top: -1px"/></li> <li><a href="https://www.python.org/">Python</a> »</li> <li> <a href="../index.html">Python 2.7.18 documentation</a> » </li> <li class="nav-item nav-item-1"><a href="index.html" >The Python Standard Library</a> »</li> <li class="nav-item nav-item-2"><a href="datatypes.html" ><span class="section-number">8. </span>Data Types</a> »</li> <li class="nav-item nav-item-this"><a href=""><span class="section-number">8.7. </span><code class="xref py py-mod docutils literal notranslate"><span class="pre">sets</span></code> — Unordered collections of unique elements</a></li> </ul> </div> <div class="footer"> © <a href="../copyright.html">Copyright</a> 1990-2024, Python Software Foundation. <br /> The Python Software Foundation is a non-profit corporation. <a href="https://www.python.org/psf/donations/">Please donate.</a> <br /> Last updated on December 09, 2024. <a href="../bugs.html">Found a bug</a>? <br /> Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 4.3.2. </div> </body> </html>
Close