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