小编Lar*_*eyt的帖子

TypeError:list indices必须是整数,而不是list.怎么修?

其中包含TypeError的代码."列表索引必须是整数,而不是列表",尽管它们是整数.我很感激你帮助我弄清楚什么是错的.我需要的是从源7x5选项卡获取具有不同值的矩阵7x5.错误发生在最后一行.

lines = []

with open("text.txt") as f:
    for line in f:
        line = [int(x) for x in line if (x != ' ') and (x != '\n')]
        lines.append(line)
    f.close()
Run Code Online (Sandbox Code Playgroud)

读取文件后的内容是带有"行"数字的列表列表.这是整数.不是字符串.喜欢:

>> [[1, 2, 3...], [4, 5, 6...], [7, 8, 9...],[...]]


i = 1
j = 1
T = []
T.append(lines[0][0]) 
Run Code Online (Sandbox Code Playgroud)

我这样做是为了避免IndexError(列出超出范围)在最后一行(i-1和东西).虽然,我认为这不是真正的蟒蛇方式.我也很感激这方面的帮助.

for i in lines:
    for j in lines:
        T[i][j] = lines[i][j] + max(T[i][j-1], T[i-1][j])
Run Code Online (Sandbox Code Playgroud)

这是发生错误的地方.如果已经存在i,我不应该得到什么.jint

python list typeerror indices

6
推荐指数
2
解决办法
4万
查看次数

OOP,Python - 类继承或属性赋值

假设我们有两个类 - CarEngine.问题是,这将是比较合理的继承Car,从Engine在使用Engine的方法(例如start()),或使用Engine作为一个属性Car

第一种方法(显而易见):

class Car(Engine):
    # do smth with inherited methods
Run Code Online (Sandbox Code Playgroud)

第二种方法:

class Car():
    def __init__(self, engine)
        self.engine = engine

    def start(self):
        return self.engine.start()

class EngineV4():
    def start(self):
        pass

class EngineV8():
    def start(self):
        pass

# usage
engine = EngineV8()
car = Car(engine)
Run Code Online (Sandbox Code Playgroud)

也是一个版本 - 子类a Car:

class V8Car(EngineV8, Car): pass
Run Code Online (Sandbox Code Playgroud)

第一种方法在某些方面看起来很好但是导致汽车所拥有的几乎所有东西的继承(例如Car(Engine, Lights, Wheels),我猜,它不是OOP中继承的目的,更不用说灯在通用意义上不是继承的.

例如,第二种方法允许汽车使用不同的发动机.

第三种方法导致与第一种方法相同的问题,除了它在另一个抽象层次上.

那么,实现这些事情最合乎逻辑的方式是什么?我理解这个问题更多是关于OOP基础知识而不是Python和古玩在哪里可以阅读更多关于此类案例的内容.

python oop

0
推荐指数
1
解决办法
114
查看次数

标签 统计

python ×2

indices ×1

list ×1

oop ×1

typeerror ×1