在python中重新分配列表

时间:2009-07-08 13:50:05

标签: python list memory-management collections

好的,这是我的问题。我正在尝试这样的事情:

for i in big_list:
   del glist[:]

   for j in range(0:val)
         glist.append(blah[j])

我们的想法是重置列表并将其重用于下一组数据点。 问题是,出于某种原因,如果第一个列表有3个点,

glist[0]
glist[1]
glist[2]

下一个列表将从索引3继续,并将最后3个元素存储在那些索引中

glist[0] = 4th elem of new list
glist[1] = 5th elem of new list
glist[2] = 6th elem of new list
glist[3] = 1st elem of new list
glist[4] = 2nd elem of new list
glist[5] = 3rd elem of new list

我确定这是分配空间的问题。但是我怎么能实现这个del g_list [:]所以结果是,

glist[0] = 1st elem of new list
glist[1] = 2nd elem of new list
glist[2] = 3rd elem of new list
glist[3] = 4th elem of new list
glist[4] = 5th elem of new list
glist[5] = 6th elem of new list

从循环内分配变量不是一种选择。有什么想法吗?

3 个答案:

答案 0 :(得分:4)

del glist[:]更改为glist = []。您不需要在Python中“重用”或“重新分配”,垃圾收集器将为您处理。

另外,在两个循环中使用'i'作为循环变量。这迟早会让你感到困惑。 :)

答案 1 :(得分:1)

你可以尝试

glist=[]

答案 2 :(得分:1)

del glist[:]可以清除列表。您需要向我们展示您的确切代码。如下所示,您所描述的行为不会发生。 append之后的del a[:]将项目置于索引0。

>>> a = [1,2,3]
>>> del a[:]
>>> a
[]
>>> a.append(4)
>>> a
[4]