Python печатает адреса памяти вложенных списков, а не содержимое списков - PullRequest
0 голосов
/ 04 октября 2018

Этот код, который я ожидаю напечатать что-то по линии [[7, 4, 1], [8, 5, 2], [9, 6, 3]], вместо этого печатает это:

[<map object at 0x7f8c1f578e10>, <map object at 0x7f8c1f578ef0>, <map object at 0x7f8c1f578fd0>]

#!/usr/bin/env python3

def transpose(matrix):
    results = [None] * len(matrix)
    for subIndex in range(len(matrix)):
        results[subIndex] = map((lambda sub : sub[subIndex]), matrix)
    return results

def rotateClockwise(matrix2):
    reversedmatrix = list(reversed(matrix2))
    rotated = transpose(reversedmatrix)
    return rotated

def main():
    m = [[1,2,3],[4,5,6],[7,8,9]]
    output = rotateClockwise(m)
    return output

if __name__ == "__main__":
    x = main()
    print(x)

Почему это так?Как я могу это исправить?

1 Ответ

0 голосов
/ 04 октября 2018

map функция не возвращает списки.Он возвращает объекты карты.

Вы можете удалить функцию map для понимания списка, предпочтительнее в python.

Изменить эту строку:

    results[subIndex] = map((lambda sub : sub[subIndex]), matrix)

Для этого:

    results[subIndex] = [sub[subIndex] for sub in matrix]
...