如何在Python中扩展List容量?

问题描述 投票:-4回答:4
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)

该文件中有700k行(每行最多2位数)我只能在该文件中获得~280k行到我的aList中。

那么,如何将aList容量扩展到280k甚至更多? (这种情况有不同的解决方案吗?)

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

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

python-3.x list buffer expand capacity
4个回答
0
投票

请试试这个。

filename = '700kLine.txt'

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

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

0
投票

是的你可以。

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

MyList.append(data)

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


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脚本。


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

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

只是我的假设。

© www.soinside.com 2019 - 2024. All rights reserved.