python中的矩阵如何删除最后一行中的\ n

时间:2018-09-03 05:41:06

标签: python

我在python3中编写代码

mat=[]
r,c=input().split()
r=int(r)
c=int(c)
x=0
for i in range(r):
    mat.append([])
    for j in range(c):
        x=x+1
        mat[i].append(x)
        print(mat[i][j], end=" ")
    print()

输入:

3 1

预期输出:

1\n 2\n 3

我的输出:

1\n 2\n 3\n

如何更正它,请帮忙

6 个答案:

答案 0 :(得分:1)

假设lastVariable持有"1\n 2\n 3\n"。您可以重新分配

lastVariable = lastVariable.rstrip('\n')

答案 1 :(得分:0)

或使用sys.stdout

import sys
mat=[]
r,c=map(int,input().split())
x=0
bool_=False
for i in range(r):
    if bool_:
        print()
    bool_=True
    for j in range(c):
        x=x+1
        mat.append(x)
        sys.stdout.write('%s '%mat[i])

答案 2 :(得分:0)

您将在每次迭代结束时输出换行符。相反,您可以在每次迭代的开始输出换行符,但是仅在mat列表不为空的情况下才从第二次迭代开始输出:

mat=[]
r,c=input().split()
r=int(r)
c=int(c)
x=0
for i in range(r):
    if mat:
        print()
    mat.append([])
    for j in range(c):
        x=x+1
        mat[i].append(x)
        print(mat[i][j], end=" ")

答案 3 :(得分:0)

只需在循环末尾保留一个if条件,以免最后一次迭代使用换行符。

mat=[]
r,c=input().split()
r=int(r)
c=int(c)
x=0
for i in range(r):
    mat.append([])
    for j in range(c):
        x=x+1
        mat[i].append(x)
        print(mat[i][j], end=" ")
    if i < r-1:
        print()

答案 4 :(得分:0)

mat=[]
r,c=raw_input().split()
r=int(r)
c=int(c)
x=0
for i in range(r):
    mat.append([])
    for j in range(c):
        x=x+1
        mat[i].append(x)
print(repr('\n '.join([' '.join(map(str,row)) for row in mat])))
print('\n '.join([' '.join(map(str,row)) for row in mat]))

输出

input

3 1
'1\n 2\n 3'
1
 2
 3
input 

3 4
'1 2 3 4\n 5 6 7 8\n 9 10 11 12'
1 2 3 4
 5 6 7 8
 9 10 11 12

答案 5 :(得分:0)

大家好,感谢您的支持和帮助,我得到的正确代码是

matrix=[]
n,m=input().split()
p=int(n)
q=int(m)
c=1
for i in range(p):
    l=[]
    for j in range(q):
        l.append(c)
        c=c+1
    matrix.append(l)
for i in range(p):
    for j in range(q):
        if j == q-1 and not i == p-1:
            print(matrix[i][j],end=r"")
        else:
            print(matrix[i][j],end=r" ")
    print()