8个版本
0.3.0 | 2021年3月31日 |
---|---|
0.2.4 | 2020年9月15日 |
0.1.4 | 2020年6月21日 |
在 算法 中排名 1650
每月下载量 774
在 2 个crate中(通过 tokenizations)使用
19KB
402 行
SeqDiff - Rust和Python之间两个序列的差异
基于Myers算法,获取两个序列之间对应关系的函数,如 diff
。
用法
Python
diff
def diff(
a: Sequence[S], b: Sequence[T], *, key: Optional[Callable[[S, T], bool]] = None
) -> Tuple[List[Optional[int]], List[Optional[int]]]: ...
返回两个序列 a
和 b
之间的对应关系。 key
是一个比较函数(如果需要的话)。
import seqdiff
a = [1, 2, 3]
b = [1, 3, 4]
a2b, b2a = seqdiff.diff(a, b)
assert all(a[i] == b[j] for i, j in enumerate(a2b) if j is not None)
assert all(a[j] == b[i] for i, j in enumerate(b2a) if j is not None)
print(a2b)
print(b2a)
[0, None, 1]
[0, 2, None]
print_diff
def print_diff(
a: Sequence[S], b: Sequence[T], *, key: Optional[Callable[[S, T], bool]] = None
): ...
美化打印两个序列 a
和 b
之间的差异。
key
是一个比较函数(如果需要的话)。
import seqdiff
a = [1, 2, 3]
b = [1, 3, 4]
a2b, b2a = seqdiff.print_diff(a, b)
返回值是一对元组。第一个元组包含第一个序列中的项目在第二个序列中出现的索引,或者在第二个序列中未出现时为 None
。第二个元组是相同的,但列出第一个序列中第二个序列对应索引的列表。
Rust
use seqdiff;
let (a2b, b2a) = seqdiff::diff(&[1, 2, 3], &[1, 3]);
assert_eq!(a2b, vec![Some(0), None, Some(1)]);
assert_eq!(b2a, vec![Some(0), Some(2)]);
有关更多信息,请参阅 文档。
相关
- tokenizations - Rust和Python的鲁棒且快速标记化对齐库
- 此库依赖于
seqdiff
- 此库依赖于