mirror of
https://github.com/pocketpy/pocketpy
synced 2026-05-06 10:13:37 +00:00
feat(stdlib): implement missing set update and pop methods
This commit is contained in:
parent
9a57b281e8
commit
d1011abafa
@ -190,6 +190,29 @@ class set:
|
||||
def __contains__(self, elem):
|
||||
return elem in self._a
|
||||
|
||||
def pop(self):
|
||||
if not self._a:
|
||||
raise KeyError('pop from an empty set')
|
||||
# dict.popitem() returns (key, value) tuple
|
||||
k, _ = self._a.popitem()
|
||||
return k
|
||||
|
||||
def difference_update(self, other):
|
||||
for elem in other:
|
||||
self.discard(elem)
|
||||
|
||||
def intersection_update(self, other):
|
||||
to_remove = [elem for elem in self if elem not in other]
|
||||
for elem in to_remove:
|
||||
self.remove(elem)
|
||||
|
||||
def symmetric_difference_update(self, other):
|
||||
for elem in other:
|
||||
if elem in self:
|
||||
self.remove(elem)
|
||||
else:
|
||||
self.add(elem)
|
||||
|
||||
def __repr__(self):
|
||||
if len(self) == 0:
|
||||
return 'set()'
|
||||
|
||||
@ -87,4 +87,20 @@ assert not {1,2,3}.isdisjoint({2,3,4})
|
||||
|
||||
# a = set()
|
||||
# b = {*a, 1, 2, 3, *a, *a}
|
||||
# assert b == {1, 2, 3}
|
||||
# assert b == {1, 2, 3}
|
||||
a = {1, 2, 3}
|
||||
b = a.pop()
|
||||
assert b in {1, 2, 3}
|
||||
assert len(a) == 2
|
||||
|
||||
a = {1, 2, 3}
|
||||
a.difference_update({2, 3, 4})
|
||||
assert a == {1}
|
||||
|
||||
a = {1, 2, 3}
|
||||
a.intersection_update({2, 3, 4})
|
||||
assert a == {2, 3}
|
||||
|
||||
a = {1, 2, 3}
|
||||
a.symmetric_difference_update({2, 3, 4})
|
||||
assert a == {1, 4}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user