-
Notifications
You must be signed in to change notification settings - Fork 41
/
Copy pathdiff_iterables.py
51 lines (39 loc) · 1.01 KB
/
diff_iterables.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
__author__ = "ipetrash"
from dataclasses import dataclass
from typing import Iterable
@dataclass
class Result:
added: list
deleted: list
def diff_iterables(iterable_1: Iterable, iterable_2: Iterable) -> Result:
return Result(
added=[x for x in iterable_2 if x not in iterable_1],
deleted=[x for x in iterable_1 if x not in iterable_2],
)
if __name__ == "__main__":
items_1 = "01234"
items_2 = "12456"
result = diff_iterables(items_1, items_2)
print(result)
assert (
Result(
added=["5", "6"],
deleted=["0", "3"],
)
== result
)
# Result(added=['5', '6'], deleted=['0', '3'])
assert (
Result(added=[], deleted=[])
== diff_iterables(items_1, items_1)
)
assert (
Result(added=["4"], deleted=[])
== diff_iterables("123", "1234")
)
assert (
Result(added=[], deleted=["3"])
== diff_iterables("123", "12")
)