Я пытаюсь преобразовать список в кортеж.
Большинство решений в Google предлагают следующий код:
l = [4,5,6]
tuple(l)
Тем не менее, код приводит к сообщению об ошибке при запуске:
Ошибка типа: объект 'tuple' не может быть вызван. Как я могу решить эту проблему?
python
python-2.7
tuples
LynnH
источник
источник
tuple
другом месте раньше?Ответы:
Это должно работать нормально. Не следует использовать
tuple
,list
или другие специальные имена , как имя переменной. Это, вероятно, то, что вызывает вашу проблему.источник
Расширяя комментарий eumiro, обычно
tuple(l)
преобразует списокl
в кортеж:Однако, если вы переопределили
tuple
быть кортежем, а неtype
tuple
:тогда вы получите TypeError, так как сам кортеж не вызывается:
Вы можете восстановить исходное определение
tuple
, выйдя и перезапустив интерпретатор, или (благодаря @glglgl):источник
Вы могли бы сделать что-то вроде этого:
Вот проблема ... Так как вы использовали
tuple
переменную для храненияtuple (45, 34)
ранее ... Итак, теперьtuple
имеетobject
типtuple
сейчас ...Это больше не a
type
и, следовательно, больше нетCallable
.Never
используйте любые встроенные типы в качестве имени вашей переменной ... У вас есть другое имя для использования. Вместо этого используйте любое произвольное имя для вашей переменной ...источник
Чтобы добавить еще одну альтернативу
tuple(l)
, как в Python> =,3.5
вы можете сделать:Короче говоря, немного быстрее, но, вероятно, страдает от читабельности.
По сути, это распаковывает список
l
внутри литерала кортежа, который создается из-за наличия единственной запятой,
.Ps: ошибка, которую вы получаете из-за маскировки имени,
tuple
т.е. вы присвоили кортежу имени где-то, напримерtuple = (1, 2, 3)
.Пользоваться
del tuple
вами должно быть хорошо.источник
Я нахожу много ответов актуальными и отвеченными правильно, но добавлю что-то новое в стек ответов.
В Python есть бесконечные способы сделать это, вот несколько примеров
Нормальный способ
умный способ
Помните, что кортеж является неизменным, используется для хранения чего-то ценного. Например, пароль, ключ или хэши хранятся в кортежах или словарях. Если нужен нож, зачем использовать меч, чтобы резать яблоки. Используйте это с умом, это также сделает вашу программу эффективной.
источник
tuple(l)
(первый способ) корочеtuple(item for item in l)
(второй путь).