如何检查没有numpy的行的总和? 如果我有这个代码:
Matrix = [["X", "X", "X"],[ "O", "O", "X"], ["X", "O", "X"]]
如何在没有numpy的情况下检查矩阵中每一行的总和?
示例:
在上面的矩阵中,我的总和将为x = "XXX", "OOX", "XOX"
修改
我不喜欢使用.join
和.map
等内容。
答案 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']
要为添加不同类型创建更通用的解决方案,您可以将reduce
与operator.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等的词典。