如何在没有numpy的矩阵中加一行?

时间:2017-03-26 00:18:55

标签: python python-2.7 matrix sum

如何检查没有numpy的行的总和? 如果我有这个代码:

Matrix = [["X", "X", "X"],[ "O", "O", "X"], ["X", "O", "X"]]

如何在没有numpy的情况下检查矩阵中每一行的总和?

示例:

在上面的矩阵中,我的总和将为x = "XXX", "OOX", "XOX"

修改

我不喜欢使用.join.map等内容。

3 个答案:

答案 0 :(得分:1)

您可以使用列表理解str.join

Matrix = [["X", "X", "X"],[ "O", "O", "X"], ["X", "O", "X"]]
m = [''.join(i) for i in matrix]
print(m)
# ['XXX', 'OOX', 'XOX']

要为添加不同类型创建更通用的解决方案,您可以将reduceoperator.add一起使用:

from operator import add
# from functools import reduce # Py3

Matrix = [1, 1, 2], ["O", "O", "X"], ["X", "O", "X"]

m = [reduce(add, i) for i in Matrix]
print(m)
# [4, 'OOX', 'XOX']

答案 1 :(得分:0)

您可以在空字符串上使用join:

x = [''.join(row) for row in Matrix]

答案 2 :(得分:-1)

您的代码不会创建矩阵。它出错了。 如果要表示带有列表的矩阵,可以执行以下操作:

matrix = [[1,1,1],[2,2,2],[0,0,0]]

然后,您可以使用列表解析找到每一行的总和:

[sum(row) for row in matrix]

编辑:问题已经改变,所以对于后来的读者我想确保它是清楚的。 sum将添加数字,而不是连接字符串。如果要连接字符串,列表推导应如下所示:

[[''.join(row) for row in matrix]]

如果要为每一行指定名称,而不是为每个行创建单独的变量,请将总和列表粘贴到for循环中,并将每个总和分配给字典:

sum_dict = {}
i=0
for s in sum_list:
    sum_dict['r'+str(i)] = s
    i +=1

会给你一本带有键r0,r1,r2等的词典。