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我不明白,请你澄清一下我应该改变什么?我不熟悉python
returntuple(l)
您正在调用tuple对象。它不可调用,因此出现错误。我不确定你想用它实现什么,尽管你不能称你的列表为“列表”,这是一个保留关键字不要给列表命名
list
,不要给元组命名
tuple
,不要使用
id
——它们是保留关键字。通过使用保留关键字命名变量,您可以“隐藏”它们。如果要隐藏多个名称,请重命名它们。另外,在元组上使用括号。为什么?@12944qwerty我不明白,请你澄清一下我应该改变什么?我不熟悉python
returntuple(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