【问题标题】:Python MemoryError on a small forloop小forloop上的Python MemoryError
【发布时间】:2015-06-02 20:41:53
【问题描述】:

我遇到了一个相当小的 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']

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

【问题讨论】:

  • 通知任何想要运行它的人:这导致我的 Spyder 崩溃

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


【解决方案1】:

您在循环时添加到列表中,因此循环永远不会结束。尝试复制列表:

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

【讨论】:

  • 谢谢!感谢您的快速响应。
【解决方案2】:

您不应该在迭代 list 时将元素添加到它,因为它会导致您的循环永远不会终止,您可以使用列表推导:

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

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

【讨论】:

  • 您的字符串缺少 s。 ;)
猜你喜欢
  • 1970-01-01
  • 2017-10-18
  • 2013-09-23
  • 2015-03-20
  • 2018-06-13
  • 1970-01-01
  • 1970-01-01
  • 2011-04-28
相关资源
最近更新 更多