我正在尝试将列表转换为元组。
Google 上的大多数解决方案都提供以下代码:
l = [4,5,6]
tuple(l)
但是,当我运行该代码时,它会导致一条错误消息:
TypeError:“元组”对象不可调用
我该如何解决这个问题?
我正在尝试将列表转换为元组。
Google 上的大多数解决方案都提供以下代码:
l = [4,5,6]
tuple(l)
但是,当我运行该代码时,它会导致一条错误消息:
TypeError:“元组”对象不可调用
我该如何解决这个问题?
它应该可以正常工作。不要使用tuple
,list
或其他特殊名称作为变量名。这可能是导致您的问题的原因。
>>> l = [4,5,6]
>>> tuple(l)
(4, 5, 6)
>>> tuple = 'whoops' # Don't do this
>>> tuple(l)
TypeError: 'tuple' object is not callable
扩展 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
为元组而不是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
你应该很好。
你可能做过这样的事情:
>>> 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
是现在object
的类型tuple
...
它不再是 a type
,因此不再是Callable
。
Never
使用任何内置类型作为变量名...您确实可以使用任何其他名称。改为为您的变量使用任意名称...
我找到了许多最新的答案并得到了正确的回答,但会在一堆答案中添加一些新的东西。
在python中有无数种方法可以做到这一点,这里有一些实例
正常方式
>>> l= [1,2,"stackoverflow","python"]
>>> l
[1, 2, 'stackoverflow', 'python']
>>> tup = tuple(l)
>>> type(tup)
<type 'tuple'>
>>> tup
(1, 2, 'stackoverflow', 'python')
聪明的方式
>>>tuple(item for item in l)
(1, 2, 'stackoverflow', 'python')
记住元组是不可变的,用于存储有价值的东西。例如,密码、密钥或哈希值存储在元组或字典中。如果需要刀,为什么要用刀切苹果。明智地使用它,它还将使您的程序高效。
L 是一个列表,我们想将它转换为一个元组。
L = [1, 2, 3]
元组(L)
通过调用元组,您将列表 (L) 转换为元组。如上所述。
>> (1, 2, 3)
您可以继续使用方括号访问元组中的任何项目。 L[0]
1
l1 = [] #Empty list is given
l1 = tuple(l1) #Through the type casting method we can convert list into tuple
print(type(l1)) #Now this show class of tuple