Python 对象不可下标

Python 对象不可下标,python,Python,我在一些python代码(简单的东西)方面遇到了一些问题。 我希望如果我点击run足够多的次数,它可能会起作用 代码如下: Data = [1, 2, 3, 4, 5] Frequency = [1, 2, 3, 3, 1] def mode(data1, frequency1): mode = [0] count = 0 while count != len(frequency1): if frequency1[count] > mode[0]:

我在一些python代码(简单的东西)方面遇到了一些问题。 我希望如果我点击run足够多的次数,它可能会起作用

代码如下:

Data = [1, 2, 3, 4, 5]
Frequency = [1, 2, 3, 3, 1]

def mode(data1, frequency1):
    mode = [0]
    count = 0
    while count != len(frequency1):
        if frequency1[count] > mode[0]:
            mode = data1[count]
        elif frequency1[count] == mode:
           mode = [mode, data1[count]]
        count +=1
    return mode

mode = mode(Data, Frequency)
print(mode)
它返回:

 if Frequency[0] > mode[0]:

 TypeError: 'int' object is not subscriptable
我看了看另一个问题和答案,但它超出了我的视野。 我哪里做错了

编辑:我知道有一些模块可以导入以找到平均值,但我想在不导入任何内容的情况下进行导入


编辑:全部代码现在已发布。如果我不将模式变量列为一个列表,则在有两种模式之前,这是正常的。

请查看您的
int(模式[0])
。你基本上是说,得到第0个元素。。。零。也许你只是想失去下标?或者更改模式的类型?

右<代码>模式是一种
int
。。。不是什么名单。。。不要为了不同的目的重复使用变量名,每次使用都要声明一个不同的变量,使用不同的名称。我不明白你的代码想做什么。要将模式[0]转换为整数,您首先希望它是什么?为什么要将以前的模式和新模式一起存储在一个列表中,作为
模式
?作为旁注,任何形式的循环都是
计数=0
计数!=len(frequency1):
frequency1[count]
可以(也应该)用
替换频率为frequency1:
。如果出于某种原因需要
count
,请在枚举(frequency1)中使用
作为count,frequency:
。但如果您只需要
count
在lockstep中为另一个列表编制索引,则不要这样做;只需对频率、zip中的数据执行
(frequency1、data1):
。无论如何,摆脱手动循环计数器管理可以消除许多容易产生的潜在错误。您还有一个名为
mode
的函数和一个名为
mode
的变量。哪一个是哪一个?(该语言有严格的定义,但这是一种疯狂的代码编写方式。)