python代码问题:TypeError: 'list' object is not callable
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python代码问题:TypeError: 'list' object is not callable相关的知识,希望对你有一定的参考价值。
class test:
def list(self):
list = []
return list
print test().list()
运行结果:[]
但如果这样:
class test:
def __init__(self):
self.list=[]
def list(self):
list = []
return list
print test().list()
就会报错,像这样:
Traceback (most recent call last):
File "C:\Users\pqj123\Desktop\test.py", line 7, in <module>
print test().list()
TypeError: 'list' object is not callable
这是什么原因,求指教。
如果在是Python解释器里运行的话,没有问题。“X,L”就是打印出X,L的值。问题应该在最后一行的X,L,如果在写成一个脚本由Python执行的话,就不能这么写了。要用"print X,L"明确告诉Python输出X,L的值。
Python(英语发音:/ˈpaɪθən/), 是一种面向对象、解释型计算机程序设计语言,由Guido van Rossum于1989年底发明,第一个公开发行版发行于1991年,Python 源代码同样遵循 GPL(GNU General Public License)协议。Python语法简洁而清晰,具有丰富和强大的类库。它常被昵称为胶水语言,能够把用其他语言制作的各种模块(尤其是C/C++)很轻松地联结在一起。常见的一种应用情形是,使用Python快速生成程序的原型(有时甚至是程序的最终界面),然后对其中有特别要求的部分,用更合适的语言改写,比如3D游戏中的图形渲染模块,性能要求特别高,就可以用C/C++重写,而后封装为Python可以调用的扩展类库。需要注意的是在您使用扩展类库时可能需要考虑平台问题,某些可能不提供跨平台的实现。
折叠在Python中学习机器学习的四个步骤:
1、首先你要使用书籍、课程、视频来学习 Python 的基础知识[2]
2、然后你必需掌握不同的模块,比如 Pandas、Numpy、Matplotlib、NLP (自然语言处理),来处理、清理、绘图和理解数据。
3、接着你必需能够从网页抓取数据,无论是通过网站API,还是网页抓取模块Beautiful Soap。通过网页抓取可以收集数据,应用于机器学习算法。
4、最后一步,你必需学习机器学习工具,比如 Scikit-Learn,或者在抓取的数据中执行机器学习算法(ML-algorithm)。
参考技术A error已经告诉你了 list对象不能用函数形式调用,就是不能callable。简单来说就是list变量和list函数重名了。本回答被提问者采纳 参考技术B >>> list('asdf')
Traceback (most recent call last):
File "<pyshell#154>", line 1, in <module>
list('asdf')
TypeError: 'list' object is not callable
你可以先确认一下list变量是否被使用:
>>> list #输入list回车,检查list的值
[1, 3, 2, 4, 6, 7, 12, 10] #发现list被占用
>>> del list #删除变量
>>> list #确认一下结果
<class 'list'> #变量被删除
>>> list('adfadf') #再次调用list()函数
['a', 'd', 'f', 'a', 'd', 'f'] #可以正常使用了。
Python - TypeError:需要可迭代参数
【中文标题】Python - TypeError:需要可迭代参数【英文标题】:Python - TypeError: iterable argument required 【发布时间】:2012-08-16 14:02:42 【问题描述】:当我尝试执行以下代码时,我得到 "TypeError: iterable argument required":
for i in range(len(SE_FE_Lists)):
print "** ", SE_FE_Lists[i]["List_contents"]
if ":" in SE_FE_Lists[i]["List_contents"]:
print ": ", SE_FE_Lists[i]
print "*--* ", SE_FE_Lists[i]["List_contents"]
if " " in SE_FE_Lists[i]["List_contents"]:
print "Space :", SE_FE_Lists[i]
print "*--* ", SE_FE_Lists[i]["List_contents"]
错误位于 if ":" in List[i]["List_contents"]:
行列表内容:
['List_selection': 'List1', 'List_contents': '1:4', 'List_selection': 'List2', 'List_contents': '1 2 4', 'List_selection': 'List3',
'List_contents': 1]
作为输出我得到:
** 1:4
: 'List_selection': 'List1', 'List_contents': '1:4'
*--* 1:4
** 1 2 4
Space : 'List_selection': 'List2', 'List_contents': '1 2 4'
*--* 1 2 4
** 1
谢谢。
【问题讨论】:
List
的内容是什么?
【参考方案1】:
首先,如果你想遍历你的对象列表中的项目,你应该使用pythonic的方式:
for item in List:
if ":" in item["List_contents"]:
print "*--* ", item["List_contents"]
if " " in item["List_contents"]:
print "*--* ", item["List_contents"]
对于您遇到的错误,您的 List
对象似乎不是字典列表。
编辑:
在你的版本之后,问题是由于你的列表的最后一项:'List_selection': 'List3', 'List_contents': 1
,这里的成员'List_contents'是一个整数,python在整数中找不到“:”......
如果不能修改列表内容,尝试通过str()
方法强制python使用字符串:
if ":" in str(item["List_contents"]):
【讨论】:
【参考方案2】:问题是你的字典中有一个整数,而不是一个可迭代的:
'List_selection': 'List3', 'List_contents': 1
这一行:
if ":" in SE_FE_Lists[i]["List_contents"]:
在整数1
中寻找“:”。 in
运算符需要可迭代的,而不是整数,所以这显然是错误。如果列表内容看起来像这样,它应该可以工作:
'List_selection': 'List3', 'List_contents': '4 5 6'
【讨论】:
以上是关于python代码问题:TypeError: 'list' object is not callable的主要内容,如果未能解决你的问题,请参考以下文章
TypeError:需要一个类似字节的对象,而不是 python 3.5.2 和 pytesseract 中的“str”
Python 3 TypeError: must be str, not bytes with sys.stdout.write()
Python 3 urllib 产生 TypeError: POST data should be bytes or an iterable of bytes。它不能是 str 类型