2D列表中的一列简单列

时间:2016-05-03 02:34:24

标签: python

import random

ROWS = 3
COLS = 3

def main():

    values = [[0,0,0], [0,0,0], [0,0,0]]
    for r in range(ROWS):
        for c in range(COLS):
            values[r][c] = random.randint(1, 4)
    print('List:')
    print(values)
    print(sum(values[0]))
    print(sum(values[1]))
    print(sum(values[2]))

main()

这是我编写的代码,我想要做的是显示每列的各个总计。例如,最终结果如下:

Total of column 0 is 7

Total of column 1 is 6



Total of column 2 is 7

4 个答案:

答案 0 :(得分:1)

内置python列表对于处理类似矩阵的数据并不是非常理想。我强烈建议使用numpy:

import numpy as np

l = np.array(values)
l.sum(axis=1)

但是,如果你真的需要使用python列表,一种策略就是用你想要的输出来减少你的外部列表。

reducer = lambda x, y : [x[i] + y[i] for i in range(len(x)]
reduce(reducer, values)

答案 1 :(得分:0)

您可以在另一对嵌套循环中简单地颠倒ROWS和COLS的顺序:

import random

ROWS = 3
COLS = 3

values = list()

for r in range(ROWS):
    values.append(list())
    for c in range(COLS):
        values[r].append(random.randint(1, 4))

print('List:', values, sep="\n")

for c in range(COLS):
    sum = 0
    for r in range(ROWS):
        sum += values[r][c]
    print("Total of column {} is {}".format(c, sum))

产地:

List:
[[3, 2, 4], [4, 3, 4], [4, 2, 3]]


Total of column 0 is 11
Total of column 1 is 7
Total of column 2 is 11

答案 2 :(得分:0)

您可以尝试:

import random
ROWS=3
COLS=3

def main():
    values = []
    for i in range(ROWS):
        list1=[]
        for j in range(COLS):
            val =random.randint(1,4)
            list1.append(val)
        values.append(list1)
    print (values)

    for col in range(COLS):

        sum = 0
        for row in range(ROWS):
            sum += values[row][col]
        print("Total of column "+str(col)+" is " +str(sum))
main()

[[4, 1, 2], [2, 3, 4], [3, 3, 1]]
Total of column 0 is 9
Total of column 1 is 7
Total of column 2 is 7

答案 3 :(得分:-1)

我最终使用的东西现在看起来很简单:

感谢您的回复

values = [[0, 0, 0], [0, 0, 0], [0, 0, 0]]
for r in range(ROWS):
    for c in range(COLS):
        values[r][c] = random.randint(1, 4)
print('List:')
print(values)
print('Total of row 0 is', sum(values[0]))
print('Total of row 1 is', sum(values[1]))
print('Total of row 2 is', sum(values[2]))
valuescolumn1 = [row[0] for row in values]
print('Total of column 0 is', sum(valuescolumn1))
valuescolumn2 = [row[1] for row in values]
print('Total of column 1 is', sum(valuescolumn2))
valuescolumn3 = [row[1] for row in values]
print('Total of column 2 is', sum(valuescolumn3))
相关问题