【问题标题】:Trying to define functions, but I get "List Function has no attributes"试图定义函数,但我得到“列表函数没有属性”
【发布时间】:2020-03-26 22:57:45
【问题描述】:
def Bubble(L):
    x = L.copy()
    for j in range(len(x)):
        for i in range (len(x)-1):
            firstnumber = x[i]
            secondnumber = x[i+1]
            if x[i] > x[i+1]:
                x[i] = secondnumber
                x[i+1] = firstnumber
    return x

def Max(L):
    print(L.Bubble[len(L)-1])

def Min(L):
    print(L.Bubble[0])

我试图在使用 Bubble 对列表进行排序后定义列表的最大值和最小值,但每次运行它时,我都会得到:

AttributeError: 'list' object has no attribute 'Bubble'

【问题讨论】:

  • 显然L 是一个列表。 Bubble 是一个函数,而不是一个列表方法。目前尚不清楚您为什么会有其他预期。
  • 您需要检查一些基础知识。你调用 Bubble 就像它是 L 上的一个属性,但它不是 - 它是一个你刚刚定义的函数。您正在使用 [] 访问 Bubble,这对于函数也不起作用。最后,对列表的整个副本进行冒泡排序以获得最小值或最大值必须是我见过的最小值或最大值实现的最低效的方式......
  • 发布有关产生异常的代码的问题时,请始终包含完整的 Traceback - 复制并粘贴它,然后将其格式化为代码(选择它并输入 ctrl-k)。您的问题还应包括产生错误的代码。请阅读minimal reproducible example

标签: python list function


【解决方案1】:

这与面向对象编程有关。对象的成员函数被对象封装,访问方式是nameofobject.memberfunction(parameters if any)。在这里,您定义了一个适用于列表的函数,而不是列表的成员函数,因此出现了这个问题。正确的做法是:

Print(Bubble(L))

【讨论】:

  • 除了 Bubble 被定义为一个名称不好(大写)的函数,所以我认为 OP 还有一些问题需要处理。
猜你喜欢
  • 2017-04-20
  • 2022-11-01
  • 2016-05-03
  • 2020-07-04
  • 1970-01-01
  • 2019-05-30
  • 2019-09-29
  • 2018-05-20
  • 1970-01-01
相关资源
最近更新 更多