Я застрял на функции в моей программе, которая форматирует несколько строк чисел, разделенных пробелами. Следующий код до сих пор занимает отформатированный список списков и делает его в таблицу разделенных пробелов без скобок:Как форматировать список списков, используя понимание списка?
def printMatrix(matrix):
return ('\n'.join(' '.join(map(str, row)) for row in matrix))
Я хотел бы все номера выстраиваться красиво, хотя на выходе. Я не могу понять, как привязать оператора формата к пониманию списка, чтобы это произошло. Вход всегда квадратная матрица (2х2 3x3 и т.д.) Вот остальная часть программы для уточнения
# Magic Squares
def main():
file = "matrix.txt"
matrix = readMatrix(file)
print(printMatrix(matrix))
result1 = colSum(matrix)
result2 = rowSum(matrix)
result3 = list(diagonalSums(matrix))
sumList = result1 + result2 + result3
check = checkSums(sumList)
if check == True:
print("This matrix is a magic square.")
else:
print("This matrix is NOT a magic square.")
def readMatrix(file):
contents = open(file).read()
with open(file) as contents:
return [[int(item) for item in line.split()] for line in contents]
def colSum(matrix):
answer = []
for column in range(len(matrix[0])):
t = 0
for row in matrix:
t += row[column]
answer.append(t)
return answer
def rowSum(matrix):
return [sum(column) for column in matrix]
def diagonalSums(matrix):
l = len(matrix[0])
diag1 = [matrix[i][i] for i in range(l)]
diag2 = [matrix[l-1-i][i] for i in range(l-1,-1,-1)]
return sum(diag1), sum(diag2)
def checkSums(sumList):
return all(x == sumList[0] for x in sumList)
def printMatrix(matrix):
return ('\n'.join(' '.join(map(str, row)) for row in matrix))
Основной()
Я думаю, что вы могли бы найти эту нить полезным http://stackoverflow.com/questions/13214809/pretty-print-2d-python-list – user3378649
некоторые пример ввода? Я предполагаю, что строки различаются по длине? –