整体思想是利用两个列表和的差值绝对值大小判断是否交互两个列表的值
#!/usr/bin/env python
# coding=utf-8def abs_test(a,b):
# 假设刚开始就是差值最小的
# 此时的差值绝对值为:
min = abs(sum(a)-sum(b))
# x,y分别为a,b列表的下标值
x=y=0
# 当a的下标小于a的长度时,依次用b的每一个值和a的值交换
# 比较他们的差值绝对值的大小
while x<len(a):
#依次用b的每一个值和当前a的值交换
while y<len(b):
a[x],b[y] = b[y],a[x]
# 交换后2个列表的差值绝对值
tmp = abs(sum(a)-sum(b))
# 如果此时的差值小,则赋值给min
# 否则还将交换回去
if min>tmp:
min = tmp
else:
a[x],b[y] = b[y],a[x]
y += 1
x += 1
y = 0
return a,b
a = [1000, 999, 998, 997, 996, 995]
b = [994, 993, 992, 3, 2, 1]
val = abs_test(a,b)
print(val)
原文链接:http://blog.51cto.com/myunix/1331612