Как исправить ошибку TypeError: 'type' object is not subscriptable?
Уффф. Тут уже речь про основы синтаксиса питона.
Ваш первый код делает следующее.
num = list( #построить список из последовательности
    map( #вызываем функцию map()
        int, #первый параметр
        f.read().split() #второй параметр
    )
)
А второй код делает (точнее пытается) вот что
num = list( #построить список из последовательности
    map[ #обращаемся к объекту map и пытаемся получить значение по ключу
        int, #первый элемент кортежа-ключа
        f.read().split() #второй элемент кортежа-ключа
    ]
)
Так как map не является словарём или подобной коллекцией, то конечно это не работает, и генерирует именно такую ошибку, которую вы указали.
Я не пойму, откуда вообще взялась идея что можно просто заменить в вызове функции круглые скобки на квадратные, если у них совершенно разная семантика.
Ну и да, не может быть ничего кроме списка на выходе, так как результат работы map() (а это будет объект-генератор) явно преобразуется в список.
В общем, выше правильно посоветовали - почитайте учебник, того же Марка Лутца, "Изучаем Питон", хотя бы 4е издание. По-крайней мере такие ошибки отпадут.
И получается что данные записываются в кортеж
Как они могут быть кортежем, если вы вызвали list()?

то есть перепишу в обычный список то пишет ошибку
Ну правильно, map - это функция, а не итерируемый объект, чтобы к нему так обращаться