列表中的最大值 -> 类型错误:'int'对象不可调用)



Python初学者,我以前使用过搜索,但没有发现问题:
我将3个列表的长度分配给一个变量:

l1 = len(Zeilen1)

我对另外两个称为l2和l3的变量执行此操作,方法与其他两个列表的长度相同。

然后我将变量插入一个名为Laengen:的列表中

Laengen = [l1,l2,l3]

现在我想找到列表的最大值
我试着用各种方法使用max(s)函数,有点让我困惑的是它第一次就起作用了。现在,每次尝试我都会得到这个错误:

类型错误:"int"对象不可调用

当我之前搜索时,我发现int值是不可调用的,因为你通常会调用一个函数,但我不知道我需要什么函数。

还有一个小问题:当我首先声明值为l1、l2、l3=0的列表时,稍后将其他数字分配给这些值,并在列表结束时打印出0,0,0。
列表是否只保留这些值,直到我再次插入它们?

它第一次工作

那么您就有了一些严格意义上是整数的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] = ...

我可以介绍一下,变量调试器:

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>

最新更新