b=[[0 for i in range(205)]for i in range(205)]
创建一个5*5,每个数都初始化为0的二维列表:
list = [ [0 for col in range(5)] for row in range(5)]
def reverse1(m,n): #1这里的两部是定义如何翻转,实际上这里处理的矩阵,是通过生成一个嵌套列表来进行处理,整
for i in range(m): #个列表是行矩阵的结合,子列表是一个个的列矩阵
for j in range(n): #2.一个关键点是如何翻转,其实上下和左右翻转是相同的类型,判断出来一个就可以。来说明一下
b[m-1-i][j]=a[i][j] #可以举个简单的例子来说,总共4行4列,上下翻转,则第一行变成第4行,第2行变成第3行。可
def reverse12(m,n): #以发总和为5.但如果用m+1-i表示新的行数就错了。因为,使用的是列表的方法,列表中实际上
for i in range(m): #是从0开始计数的,因此要用m-1-i表示新的行数。
for j in range(n):
b[i][n-1-j]=a[i][j]
##def reverse1(m,n):
## for i in range(m):
## for j in range(n):
## b[m-i+1][j]=a[i][j]
##def reverse2(m,n):
## for i in range(m):
## for j in range(n):
## b[i][n-j+1]=a[i][j]
m,n,t=input().split()
m=int(m)
n=int(n)
t=int(t)
#a=[[0 for i in range(m)]for i in range(n)]
#b=[[0 for i in range(m)]for i in range(n)]
#a=[[0 for i in range(n)]for i in range(m)]
#for i in range(m): 这种方法是错误的,这里做的主要是把矩阵的数据输入
# for j in range(n): 这种方法用了两个循环实际上需要输入m*n个n个元素的子列表
# a[i][j]=input().split()
x=input().split() 这种方法才会输入m组n个的数据
for j in range(n):
a[i][j]=int(x[j])
if t==1:
reverse1(m,n)
else:
reverse2(m,n)
for i in range(m):
for j in range(n):
print(b[i][j],end=' ') end=‘ ’目的是使数据输出在一行
print() 这里的print()是指当n个数据输出完了之后,后面的数据都为空,这一行用完了,换行
完整代码:
a=[[0 for i in range(205)]for i in range(205)]
b=[[0 for i in range(205)]for i in range(205)]
def revers1(m,n):
for i in range(m):
for j in range(n):
b[m-i-1][j]=a[i][j]
def revers2(m,n):
for i in range(m):
for j in range(n):
b[i][n-j-1]=a[i][j]
x=input().split()
M=int(x[0])
N=int(x[1])
T=int(x[2])
#print(M,N,T)
for i in range(M):
x=input().split()
for j in range(N):
a[i][j]=int(x[j])
# print(arr[i][j],str=' ')
if T==1:
revers1(M,N)
else:
revers2(M,N)
for i in range(M):
for j in range(N):
print(b[i][j],end=" ")
print()