|
|
发表于 2020-2-17 10:04:47
|
显示全部楼层
本帖最后由 xdhuch 于 2020-2-17 10:15 编辑
你修改我的代码的时候用到了list拷贝,这里有个陷阱就是你直接循环使用res进行拷贝,当res中的值变化时,会刷新list中的值,导致list中的值都是重复的。
只需改两行,就可以了:
- import itertools
- def Traversal_4_4():
- ns = (1,3,5,7,1/3,1/5,1/7)
- #res = [[1,0,0,0],[0,1,0,0],[0,0,1,0],[0,0,0,1]]
- poss = ((1,0),(2,0),(2,1),(3,0),(3,1),(3,2))
- s=[]
- for arr in itertools.product(ns, repeat=6):
- res = [[1,0,0,0],[0,1,0,0],[0,0,1,0],[0,0,0,1]]
- for i in range(6):
- res[poss[i][0]][poss[i][1]] = round(arr[i], 4)
- res[poss[i][1]][poss[i][0]] = round(1/arr[i], 4)
- s.append(res)
- return s
-
- if __name__ == '__main__' :
- t=Traversal_4_4()
- for x in t:
- print(x)
复制代码 |
|