Python实现两个数字文本文件逐行逐元素比对的最简方法咨询
Python实现文本文件逐元素比对的最简方案
核心思路是先把比对基准文件file2的所有行转成数字列表缓存,再遍历file1逐行做匹配校验,全程使用Python内置函数实现,无需安装第三方依赖:
# 缓存file2所有行的数字序列 with open("file2.txt", encoding="utf-8") as f: f2_rows = [list(map(int, line.strip().split())) for line in f if line.strip()] # 遍历file1逐行匹配 with open("file1.txt", encoding="utf-8") as f: for raw_line in f: line = raw_line.strip() if not line: continue f1_row = list(map(int, line.split())) # 短路判断:只要存在任意一行f2满足所有元素差值≤10就输出 if any(all(abs(a-b) <= 10 for a,b in zip(f1_row, f2_row)) for f2_row in f2_rows): print(line)
逻辑说明
all()用来校验单组比对的所有位置元素是否都满足差值要求,只要有一个位置不符合就会提前终止当前组的校验any()用来判断当前file1行是否和任意一行file2匹配,匹配到符合要求的行就会提前终止校验,性能更高- 运行你给出的示例输入时,代码会直接输出
10 20 30,和预期结果完全一致
内容的提问来源于stack exchange,提问作者uman laaamak
相关产品推荐
相关产品推荐

