Python 将列表传递给类时出现索引错误
我有以下代码:Python 将列表传递给类时出现索引错误,python,list,class,Python,List,Class,我有以下代码: class TestClass: def __init__(self, myint, mylist=None): if mylist == None: mylist = [] self.myint = myint self.mylist = mylist[:] theList = [[1,3,4,5,6],[1,2,3],[1],[1,2,3,4,5,6,7,8,9]] myOb = [] f
class TestClass:
def __init__(self, myint, mylist=None):
if mylist == None:
mylist = []
self.myint = myint
self.mylist = mylist[:]
theList = [[1,3,4,5,6],[1,2,3],[1],[1,2,3,4,5,6,7,8,9]]
myOb = []
for i in range(len(theList)):
myOb[i] = TestClass(sum(theList[i]),theList[i])
print(myOb[i].myint)
print(myOb[i].mylist)
但是,\uuuuu init\uuuu在索引器上失败:列表分配索引超出范围。这我不明白
有什么建议吗?您可以添加:
myOb[0] = 1
在您将其定义为理解之后-myOb[i]=
在第一次迭代中尝试分配给第一个单元格(i=0
),但该单元格尚不存在(有0个单元格)。你想要的是:
myOb.append(TestClass(sum(theList[i]),theList[i]))
如果您正在构建myOb,并且不需要打印,您可以使用:
myOb = map(lambda x: TestClass(sum(x),x), theList)
或者是一份清单。更好的是,自己在\uuuuu init\uuuu
中求和:
def __init__(self, mylist):
...
self.myint = sum(mylist)
地图将变成:
myOb = map(TestClass, theList)
您可以添加:
myOb[0] = 1
在您将其定义为理解之后-myOb[i]=
在第一次迭代中尝试分配给第一个单元格(i=0
),但该单元格尚不存在(有0个单元格)。你想要的是:
myOb.append(TestClass(sum(theList[i]),theList[i]))
如果您正在构建myOb,并且不需要打印,您可以使用:
myOb = map(lambda x: TestClass(sum(x),x), theList)
或者是一份清单。更好的是,自己在\uuuuu init\uuuu
中求和:
def __init__(self, mylist):
...
self.myint = sum(mylist)
地图将变成:
myOb = map(TestClass, theList)
因此,我的疏忽是,名单被宣布为:
myOb = []
然后我继续尝试向列表中添加元素。我应该把它们加上去的。我已将代码更改为:
myOb = []
for i in range(len(theList)):
myOb.append(TestClass(theList[i]))
print(myOb[i].myint)
print(myOb[i].mylist)
现在我得到了正确的输出:
19
[1, 3, 4, 5, 6]
6
[1, 2, 3]
1
[1]
45
[1, 2, 3, 4, 5, 6, 7, 8, 9]
就这样。新手失误
p.因此,我的疏忽是,该列表被宣布为:
myOb = []
然后我继续尝试向列表中添加元素。我应该把它们加上去的。我已将代码更改为:
myOb = []
for i in range(len(theList)):
myOb.append(TestClass(theList[i]))
print(myOb[i].myint)
print(myOb[i].mylist)
现在我得到了正确的输出:
19
[1, 3, 4, 5, 6]
6
[1, 2, 3]
1
[1]
45
[1, 2, 3, 4, 5, 6, 7, 8, 9]
就这样。新手失误
p.添加
python
标记,以更好地限定您的问题。谢谢。添加python
标记,以更好地限定您的问题。谢谢