我试图一次将列表分成 2 折(10 次)并对每个分区执行操作。我想一次以 1:9 的比例在列表上执行此操作。这意味着我已将列表划分为 10 折,在第一次迭代中,我将对第一次折叠和剩余的 9 次执行操作,在第二次迭代中,我将在第二次折叠和剩余的 9 次上执行操作,依此类推。现在,为了做到这一点,我决定保留原始列表的副本并将其中一个折叠分配给一个临时变量,将其从列表中删除并将其余部分作为第二个分区。然后将列表的副本重新分配给它以进行下一次迭代。但是,似乎副本和原始文件在整个 for 循环中始终相同,因此我得到一个索引超出范围错误。这是问题的一个简单示例:
>>> a = ['a', 'b', 'c', 'd', 'e', 'f']
>>> b = a
>>> b
['a', 'b', 'c', 'd', 'e', 'f']
>>> for i in xrange (len(a)):
del (b [i])
b = a
Traceback (most recent call last):
File "<pyshell#22>", line 2, in <module>
del (b [i])
IndexError: list assignment index out of range
似乎 a 和 b 都指向内存中的相同位置,并且只有一个位置存储列表的实际内容。你能告诉我这里有什么问题以及如何解决我的问题吗?提前致谢!