我有一个从A到Z的列表。[A, B, C, D, ...., Z]
我应该得到一个26x26对称矩阵,其中对角线等于零。
我使用随机数生成器来填充矩阵的上半部分。后来我想将矩阵的上半部分复制到矩阵的下半部分。
在python中有一种简单的方法吗? (迭代次数减少)?
答案 0 :(得分:0)
你可以先制作上面的随机矩阵:
import random
grid = []
for i in range(26):
grid.append([0]*(i+1)+random.sample(xrange(100), 25-i)) #this creates the upper triangular matrix with random numbers (upto 100) only. The diagonal and the lower triangular matrix has items = 0
然后为了制作对称矩阵,只需这样做:
for i in range(1, 26):
for j in range(0,i):
grid[i][j]=grid[j][i] #this copies the element "opposite" to that index w.r.t the diagonal in order to make a symmetric matrix.
注意:对角元素仍然为零。
希望这会有所帮助。