Python初学者在这里,我之前使用过搜索,但我没有发现我的问题:
我指定了3个列表的长度,例如将“Zeilen1”称为变量:
l1 = len(Zeilen1)
我对另外两个名为l2和l3的变量执行此操作,其方式与其他2个列表的长度相同。
然后我将变量插入名为Laengen的列表中:
Laengen = [l1,l2,l3]
现在我想找到列表的最大值 我试图以各种方式使用max(s)函数,对我来说有点困惑的是它第一次工作。现在每次尝试都会收到此错误:
TypeError:'int'对象不可调用
当我在搜索之前发现int值不可调用时,正如您通常调用函数但我得不到我需要的函数。
还有一个小问题:当我首先使用值l1,l2,l3 = 0声明列表时,稍后为这些值指定其他数字,并在结束时打印列表,打印0,0,0。
列表是否仅保留值,直到我再次插入它们?
答案 0 :(得分:1)
它第一次工作
然后你有一些严重为整数的max
值。例如。
max = max(some_list) # this works
你再次尝试
max(some_list) # this errors... int not callable
当我首先使用值l1,l2,l3 = 0声明列表时,稍后为这些值指定其他数字并在结束时打印列表0,0,0
您不需要l1,l2,l3
,而是使用列表
Laengen = [0,0,0]
# Laengen[0] = ...
# Laengen[1] = ...
答案 1 :(得分:0)
我可以介绍一下变量调试器:
def debug(*args):
print('Variable debugger output:')
for arg in args:
if arg in ["__builtins__", "inspect", "debug"]:
continue # skip these variables
try:
var = eval(arg)
print('{0}: {1} {2}\n'.format(arg, type(var), var))
except (TypeError, NameError):
print('{0}: {1}\n'.format(type(arg), arg))
通过debug(*dir())
(示例输出)在程序中的任何位置使用:
res: <type 'dict'> {'#label_Bbb': 'hereaswell...', '#labelA': 'thereissomethinghere'}
row: <type 'dict'> {}
sigord: <type 'function'> <function sigord at 0x7fc230710c08>
sigorder: <type 'function'> <function sigorder at 0x7fc230710f50>
slicezip: <type 'function'> <function slicezip at 0x7fc230710938>
sys: <type 'module'> <module 'sys' (built-in)>
test: <type 'list'> [0, 2, 0, 4, 0, 6, 0, 8, 0, 10, 0, 12]
timeit: <type 'module'> <module 'timeit' from '/usr/lib/python2.7/timeit.pyc'>
tup: <type 'tuple'> ((), ())
weird_list: <type 'list'> [[1, 2, [3], 2], [[[3]], 6], 4, 5]
x: <type 'int'> 2
或特定变量debug(max)
:
>>> debug(max)
Variable debugger output:
<type 'builtin_function_or_method'>: <built-in function max>
正如cricket_007所说,如果你覆盖max = 5
,那么它会显示:
>>> max = 5
>>> debug(max)
Variable debugger output:
<type 'int'>: 5
所以在你的错误发生之前,放下一个debug(*dir())
,它会显示你在那一点上的一切。您可能会对结果感到惊讶。
要删除交互式会话中的本地var,请使用del <var>