- 论坛徽章:
- 0
|
本帖最后由 HyryStudio 于 2010-06-01 20:02 编辑
回复 1# hulnglei
这种运算应该用C语言写一个扩展然后用Python调用。
如果非要用Python写,可以如下优化:
如果大多数比较都不成功,即大多数都相差不止一个或者相同的话,可以先比较,只有成功之后再找出那个不同的元素:
下面的compare函数当找到两个不同时立即返回,可以提高比较速度。- from itertools import izip
- def compare(a, b):
- count = 0
- for x,y in izip(a,b):
- if x!=y:
- count += 1
- if count > 1: return False
- if count == 1: return True
- return False
复制代码 另外可考虑用Psyco加速。
或者同时找到不同的元素,因为只有一个不同,因此不需要用列表保存:- def compare(a, b):
- count = 0
-
- for x,y in izip(a,b):
- if x!=y:
- dif1 = x
- dif2 = y
- if count == 1: return None
- count += 1
- if count == 1: return dif1,dif2
- return None
复制代码 |
|