Convert list to tuple in Python
我正在尝试将列表转换为元组。
当我用谷歌搜索它时,我发现很多答案类似于:
1 2 | l = [4,5,6] tuple(l) |
但如果我这样做,我会收到这个错误消息:
TypeError: 'tuple' object is not callable
我如何解决这个问题?
它应该工作得很好。不要使用
1 2 3 | >>> l = [4,5,6] >>> tuple(l) (4, 5, 6) |
根据Eumiro的评论,通常
1 2 3 4 5 6 7 | In [1]: l = [4,5,6] In [2]: tuple Out[2]: <type 'tuple'> In [3]: tuple(l) Out[3]: (4, 5, 6) |
但是,如果您将
1 2 3 4 | In [4]: tuple = tuple(l) In [5]: tuple Out[5]: (4, 5, 6) |
然后会得到一个类型错误,因为元组本身不可调用:
1 2 | In [6]: tuple(l) TypeError: 'tuple' object is not callable |
您可以通过退出并重新启动解释器或(感谢@glglgl)恢复EDOCX1的原始定义(0):
1 2 3 4 | In [6]: del tuple In [7]: tuple Out[7]: <type 'tuple'> |
你可能做过类似的事情:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | >>> 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) |
问题是……因为您之前使用了一个
它不再是一个
要添加另一个
1 | t = *l, # or t = (*l,) |
短,有点快,但可能会受到可读性的影响。
这实际上是在一个元组文本中解包列表
P.S:您收到的错误是由于名称
用
我找到了许多最新的答案,并得到了正确的回答,但会在答案堆中增加一些新的东西。
在Python中,有无数种方法可以做到这一点,以下是一些实例正常方式
1 2 3 4 5 6 7 8 | >>> l= [1,2,"stackoverflow","python"] >>> l [1, 2, 'stackoverflow', 'python'] >>> tup = tuple(l) >>> type(tup) <type 'tuple'> >>> tup (1, 2, 'stackoverflow', 'python') |
聪明的方式
1 2 | >>>tuple(item for item in l) (1, 2, 'stackoverflow', 'python') |
记住tuple是不可变的,用于存储有价值的东西。例如,密码、键或哈希存储在元组或字典中。如果需要刀,为什么要用刀切苹果。明智地使用它,它也会使您的程序高效。