Как исправить ошибку TypeError: 'type' object is not subscriptable?

with open('input.txt', 'r') as f:
    num = list(map(int, f.read().split()))

Вот мой код. И получается что данные записываются в кортеж, а мне нужно редактировать список. Но если я сделаю вот так num = list(map[int, f.read().split()]) то есть перепишу в обычный список то пишет ошибку TypeError: 'type' object is not subscriptable. В инете я не нашёл ответа который мне подошёл ....
  • Вопрос задан
  • 7228 просмотров
Решения вопроса 2
Vindicar
@Vindicar
RTFM!
Уффф. Тут уже речь про основы синтаксиса питона.
Ваш первый код делает следующее.
num = list( #построить список из последовательности
    map( #вызываем функцию map()
        int, #первый параметр
        f.read().split() #второй параметр
    )
)

А второй код делает (точнее пытается) вот что
num = list( #построить список из последовательности
    map[ #обращаемся к объекту map и пытаемся получить значение по ключу
        int, #первый элемент кортежа-ключа
        f.read().split() #второй элемент кортежа-ключа
    ]
)

Так как map не является словарём или подобной коллекцией, то конечно это не работает, и генерирует именно такую ошибку, которую вы указали.
Я не пойму, откуда вообще взялась идея что можно просто заменить в вызове функции круглые скобки на квадратные, если у них совершенно разная семантика.
Ну и да, не может быть ничего кроме списка на выходе, так как результат работы map() (а это будет объект-генератор) явно преобразуется в список.
В общем, выше правильно посоветовали - почитайте учебник, того же Марка Лутца, "Изучаем Питон", хотя бы 4е издание. По-крайней мере такие ошибки отпадут.
Ответ написан
Комментировать
SoreMix
@SoreMix Куратор тега Python
yellow
И получается что данные записываются в кортеж

Как они могут быть кортежем, если вы вызвали list()?

то есть перепишу в обычный список то пишет ошибку

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

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы