一个小的forloop上的Python MemoryError

时间:2015-06-02 20:41:53

标签: python python-2.7 loops out-of-memory

我遇到了一个相当小的for循环问题。我正在尝试在Excel工作表中创建一些列的列表,并使用以下代码:

import string
col_list = list(string.ascii_uppercase)
for i in col_list:
    a = 'A' + i
    col_list.append(a)
print col_list

我收到以下错误:

Traceback (most recent call last):
    File ".../table.py", line 5, in <module>
    a = 'A' + i
MemoryError

我想要的输出是来自['A','B','C',...,'AX','AZ']的列表

有人可以帮我理解这里发生了什么吗?谢谢。

2 个答案:

答案 0 :(得分:6)

当您循环遍历列表时,您将添加到列表中,因此循环永远不会结束。尝试制作一份清单:

for i in list(col_list):
    a = 'A' + i
    col_list.append(a)

答案 1 :(得分:2)

你在迭代它时不应该向list添加元素,因为它会导致你的循环永远不会终止,而是你可以使用列表理解:

import string
['A' + i for i in string.ascii_uppercase]

另请注意,由于字符串是可迭代的,因此无需将string.ascii_uppercase转换为列表。