如何在Python中扩展列表容量?

时间:2018-08-30 06:25:56

标签: python-3.x list buffer expand capacity

read = open('700kLine.txt')

# use readline() to read the first line 

line = read.readline()

aList = []

for line in read:
    try:
        num = int(line.strip())
        aList.append(num)
    except:
        print ("Not a number in line " + line)

read.close()
print(aList)

该文件中有70万行(每行最多2位数字) 我只能在该文件中找到〜280k Line到我的aList中。

那么,如何将列表容量从280k扩展到700k或更多? (这种情况是否有其他解决方案?)

  

你好,我刚刚解决了这个问题。感谢您的所有帮助。那是一个明显的缓冲问题。   解决方法只是增加缓冲区的大小。

链接在这里 Increase output buffer when running or debugging in PyCharm

4 个答案:

答案 0 :(得分:0)

请尝试这个。

filename = '700kLine.txt'

with open(filename) as f:
    data = f.readlines()

print(data)
print(type(data)) #stores the data in a list

答案 1 :(得分:0)

是的,可以。

定义列表后,您可以添加,编辑或删除其元素。要在末尾添加更多元素,请使用append函数:

MyList.append(data)

MyList是列表的名称,data是要添加的元素。

答案 2 :(得分:0)

可能是您的计算机用尽了内存来处理文件?我试图生成一个无限循环,将一个数字添加到列表中,最后得到了4700万的len(list) >> 47119572,我用来测试的代码如下。

我在在线REPL上尝试了此代码,发现它的'len(list)'明显更低。

list = []

while True:
  try:
    if len(list) > 0:
      list.append(list[-1] + 1)
    else:
      list.append(1)
  except MemoryError:
      print("memory error, last count is: ", list[-1])
      raise MemoryError

也许尝试保存读取的数据位,而不是一次读取整个文件?

只是我的假设。

答案 3 :(得分:0)

我试图重新创建您的问题:

# creating 700kLine file
with open('700kLine.txt', 'w') as f:
    for i in range(700000):
        f.write(str(i+1) + '\n')

# creating list from file entries
aList = []
with open('700kLine.txt', 'r') as f:
    for line in f:
        num = int(line.strip())
        aList.append(num)

# print(aList)
print(aList[:30])

Jupyter笔记本在打印所有700K行时会由于使用过多内存而引发错误。如果您确实要打印所有700k值,请从终端运行python脚本。