取某一列
方法1
rel_matrix = [[5,3,4,2,3],[1,5,2,2,3],[3,2,5,2,1],[1,4,2,5,2],[1,2,3,1,5]]
k = 2 # 你要取的那一列的下标
col = [row[k] for row in rel_matrix]
方法2
rel_matrix = [[5,3,4,2,3],[1,5,2,2,3],[3,2,5,2,1],[1,4,2,5,2],[1,2,3,1,5]]
k = 2 # 你要取的那一列的下标
col = list(list(zip(*rel_matrix))[k])
为啥要用两个list是这样的
zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。
在 Python 3.x中为了减少内存,zip() 返回的是一个对象。如需展示列表,需手动 list() 转换。
所以就清楚了,第一个list只是为了把zip()
返回转换成一个列表,方便我们用下标访问,但是访问得到的是个元组,如果你想做的操作列表操作那就再用 list
转一下,当然,如果你要做的操作用元组也能返回一样的值,那就不用转了,就比如下面的求和,sum可以对元组求和,也可以对列表求和。所以就不用转
计算每一列相加
方法1
rel_matrix = [[5,3,4,2,3],[1,5,2,2,3],[3,2,5,2,1],[1,4,2,5,2],[1,2,3,1,5]]
n = len(rel_matrix)
res = []
for i in range(n):
col = [row[i] for row in rel_matrix]
res.append(sum(col))
number = res.index(max(res)) # 返回列求和的最大值对应的下标
方法2
rel_matrix = [[5,3,4,2,3],[1,5,2,2,3],[3,2,5,2,1],[1,4,2,5,2],[1,2,3,1,5]]
n = len(rel_matrix)
res = []
for col in zip(*rel_matrix): # 二维列表取列
res.append(sum(col))
number = res.index(max(res)) # 返回列求和的最大值对应的下标