列表中的最大值 - > TypeError:'int'对象不可调用)

时间:2017-02-14 23:58:06

标签: python list function int max

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。
列表是否仅保留值,直到我再次插入它们?

2 个答案:

答案 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>