python - tuple转str - tuple str




在Python中将列表转换为元组 (5)

你可能做了这样的事情:

>>> tuple = 45, 34  # You used `tuple` as a variable here
>>> tuple
(45, 34)
>>> l = [4, 5, 6]
>>> tuple(l)   # Will try to invoke the variable `tuple` rather than tuple type.

Traceback (most recent call last):
  File "<pyshell#10>", line 1, in <module>
    tuple(l)
TypeError: 'tuple' object is not callable
>>>
>>> del tuple  # You can delete the object tuple created earlier to make it work
>>> tuple(l)
(4, 5, 6)

这就是问题...既然你已经使用了一个tuple变量来保存一个tuple (45, 34) ......所以,现在tuple是一个类型为tupleobject ,现在...

它不再是一种type ,因此它不再是Callable

Never使用任何内置类型作为变量名称...您有任何其他名称可供使用。 改用任何任意名称代替...

我试图将列表转换为元组。

当我谷歌,我发现了很多类似的答案:

l = [4,5,6]
tuple(l)

但如果我这样做,我会得到这个错误信息:

TypeError:'tuple'对象不可调用

我该如何解决这个问题?


它应该工作正常。 不要使用tuplelist或其他特殊名称作为变量名称。 这可能是什么导致你的问题。

>>> l = [4,5,6]
>>> tuple(l)
(4, 5, 6)

扩展eumiro的评论,通常tuple(l)会将列表l转换为元组:

In [1]: l = [4,5,6]

In [2]: tuple
Out[2]: <type 'tuple'>

In [3]: tuple(l)
Out[3]: (4, 5, 6)

但是,如果您已经将tuple重新定义为tuple组而不是type tuple

In [4]: tuple = tuple(l)

In [5]: tuple
Out[5]: (4, 5, 6)

那么你会得到一个TypeError,因为该元组本身不可调用:

In [6]: tuple(l)
TypeError: 'tuple' object is not callable

您可以通过退出并重新启动解释器来恢复tuple的原始定义,或者(感谢@glglgl):

In [6]: del tuple

In [7]: tuple
Out[7]: <type 'tuple'>

要添加tuple(l)另一个替代方法,从Python> = 3.5您可以:

t = *l,  # or t = (*l,) 

总之,速度稍快,但可能会受到可读性的限制。

这基本上解开了由于单个逗号的存在而创建的元组文本内的列表l

Ps:你收到的错误是由于掩盖了名字tuple就是你在某处某处分配了名称元组,例如tuple = (1, 2, 3)

使用del tuple你应该很好走。


l = [4,5,6]

将列表转换为元组,

l = tuple(l)




tuples