我正在尝试创建一个返回此函数的函数:
42334
44423
21142
14221
由此:
polje = [[1, 2, 4, 4], [4, 1, 4, 2], [2, 1, 4, 3], [2, 4, 2, 3], [1, 2, 3, 4]]
该函数只是遍历列表并从最后一个开始打印它们的元素。我已经能够通过打印获得正确的结果,但我正在尝试使其能够简单地返回结果。我该怎么做?我已经尝试过发电机,单线换环等等,但互联网上的笔记并不丰富,而且经常以复杂的方式写作......
这是我到目前为止的代码:
def izpisi(polje):
i = len(polje[0]) - 1
while i >= 0:
for e in polje:
print(e[i], end="")
i -= 1
print("\n")
return 0
答案 0 :(得分:2)
>>> polje = [[1, 2, 4, 4], [4, 1, 4, 2], [2, 1, 4, 3], [2, 4, 2, 3], [1, 2, 3, 4]]
>>> def izpisi(polje):
return zip(*map(reversed, polje))
>>> for line in izpisi(polje):
print(*line, sep='')
42334
44423
21142
14221
zip(*x)
转置矩阵。但是,从最后一列开始,我只需添加map(reversed,)
来处理它。
其余的只是打印每一行。
答案 1 :(得分:1)
您可以更改代码以将项目存储在list
中,而不是打印它们。
并将每个list
存储在另一个list
中,以便返回所有这些内容。
def izpisi(polje):
a = []
i = len(polje[0]) - 1
while i >= 0:
l = []
for e in polje:
l.append(e[i])
i -= 1
a.append(l)
return a
答案 2 :(得分:0)
def izpisi(polje):
return '\n'.join([ # inserts '\n' between the lines
''.join(map(str, sublst)) # converts list to string of numbers
for sublst in zip(*polje) # zip(*...) transposes your matrix
][::-1]) # [::-1] reverses the list
polje = [[1, 2, 4, 4], [4, 1, 4, 2], [2, 1, 4, 3], [2, 4, 2, 3], [1, 2, 3, 4]]
print izpisi(polje)