Python 3.x 类型错误:';元组';对象在将列表转换为元组作为返回值时不可调用
我想将最终列表转换为元组。然而,我收到了一个错误。我如何才能摆脱它Python 3.x 类型错误:';元组';对象在将列表转换为元组作为返回值时不可调用,python-3.x,runtime-error,Python 3.x,Runtime Error,我想将最终列表转换为元组。然而,我收到了一个错误。我如何才能摆脱它 li= [(19343160,),(39343169,)] def render_list_sql(li): l = [] for index, tuple in enumerate(li): idd = str(tuple[0]) l.append(idd) return tuple(l) print(呈现列表\u sql(li)) 错误 回溯(
li= [(19343160,),(39343169,)]
def render_list_sql(li):
l = []
for index, tuple in enumerate(li):
idd = str(tuple[0])
l.append(idd)
return tuple(l)
print(呈现列表\u sql(li))
错误
回溯(最近一次呼叫最后一次):
文件“test.py”,第20行,在
打印(渲染列表sql(列表))
文件“test.py”,第14行,在render_list_sql中
返回元组(l)
TypeError:“tuple”对象不可调用
如前所述,不要为对Python有其他意义的变量使用名称。这称为“阴影”,您将失去原始名称的含义
例如:
>>tuple#这是用于创建tuple的类。
>>>对于索引,枚举中的元组([1,2,3]):#这与您的代码类似
... 打印(索引、元组)
...
0 1
1 2
2 3
>>>tuple#tuple不再是一个类,而是一个整数的实例。
3.
>>>tuple([1,2,3])#所以这失败了
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
TypeError:“int”对象不可调用
>>>3([1,2,3])#你基本上是这样做的:
:1:SyntaxWarning:'int'对象不可调用;也许你漏掉了一个逗号?
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
TypeError:“int”对象不可调用
所以不要这样做:
li=[(19343160,),(39343169,)]#不重新分配列表
def呈现列表sql(li):
l=[]
对于索引,枚举中的tup(li):#不重新分配tuple
idd=str(tup[0])
l、 附加(idd)
返回元组(l)#现在这将起作用
打印(渲染列表sql(li))
输出:
('19343160','39343169')
仅供参考,使用生成器的较短版本:
li=[(19343160,),(39343169,)]
tup=tuple(str(i[0]),表示li中的i)
打印(tup)
如前所述,不要为对Python有其他意义的变量使用名称。这称为“阴影”,您将失去原始名称的含义
例如:
>>tuple#这是用于创建tuple的类。
>>>对于索引,枚举中的元组([1,2,3]):#这与您的代码类似
... 打印(索引、元组)
...
0 1
1 2
2 3
>>>tuple#tuple不再是一个类,而是一个整数的实例。
3.
>>>tuple([1,2,3])#所以这失败了
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
TypeError:“int”对象不可调用
>>>3([1,2,3])#你基本上是这样做的:
:1:SyntaxWarning:'int'对象不可调用;也许你漏掉了一个逗号?
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
TypeError:“int”对象不可调用
所以不要这样做:
li=[(19343160,),(39343169,)]#不重新分配列表
def呈现列表sql(li):
l=[]
对于索引,枚举中的tup(li):#不重新分配tuple
idd=str(tup[0])
l、 附加(idd)
返回元组(l)#现在这将起作用
打印(渲染列表sql(li))
输出:
('19343160','39343169')
仅供参考,使用生成器的较短版本:
li=[(19343160,),(39343169,)]
tup=tuple(str(i[0]),表示li中的i)
打印(tup)
您正在隐藏多个名称,请重命名它们。另外,在元组上使用括号。为什么?@12944qwerty我不明白,请你澄清一下我应该改变什么?我不熟悉pythonreturntuple(l)
您正在调用tuple对象。它不可调用,因此出现错误。我不确定你想用它实现什么,尽管你不能称你的列表为“列表”,这是一个保留关键字不要给列表命名list
,不要给元组命名tuple
,不要使用id
——它们是保留关键字。通过使用保留关键字命名变量,您可以“隐藏”它们。如果要隐藏多个名称,请重命名它们。另外,在元组上使用括号。为什么?@12944qwerty我不明白,请你澄清一下我应该改变什么?我不熟悉pythonreturntuple(l)
您正在调用tuple对象。它不可调用,因此出现错误。我不确定你想用它实现什么,尽管你不能称你的列表为“列表”,这是一个保留关键字不要给列表命名list
,不要给元组命名tuple
,不要使用id
——它们是保留关键字。通过使用保留关键字命名变量,您可以“隐藏”它们。非常感谢。很好的解释谢谢。很好的解释
Expected value to be returned is:
(19343160,39343169)
Traceback (most recent call last):
File "test.py", line 20, in <module>
print(render_list_sql(list))
File "test.py", line 14, in render_list_sql
return tuple(l)
TypeError: 'tuple' object is not callable