#diff #vec #algorithm

seqdiff

两个序列之间的差异

8个版本

0.3.0 2021年3月31日
0.2.4 2020年9月15日
0.1.4 2020年6月21日

算法 中排名 1650

Download history 286/week @ 2024-03-13 213/week @ 2024-03-20 211/week @ 2024-03-27 254/week @ 2024-04-03 268/week @ 2024-04-10 249/week @ 2024-04-17 401/week @ 2024-04-24 292/week @ 2024-05-01 263/week @ 2024-05-08 309/week @ 2024-05-15 353/week @ 2024-05-22 176/week @ 2024-05-29 195/week @ 2024-06-05 224/week @ 2024-06-12 167/week @ 2024-06-19 139/week @ 2024-06-26

每月下载量 774
2 个crate中(通过 tokenizations)使用

MIT 许可证

19KB
402

SeqDiff - Rust和Python之间两个序列的差异

creates.io pypi Actions Status

基于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]]]: ...

返回两个序列 ab 之间的对应关系。 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
): ...

美化打印两个序列 ab 之间的差异。
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)]);

有关更多信息,请参阅 文档

相关

无运行时依赖