我是编程和python的新手,我正在寻找在我的程序中存储信息的最佳方式。
我希望为每件商品存储多个值,但不知道最好的方法是什么。它会是这样的:
数字:x位置,y位置,颜色
我遇到的问题是我可能拥有1,000,000个号码......我是否会制作一百万个词典?如果我这样做,我能否有效地召唤所有人?
答案 0 :(得分:1)
Python中有两种类型的数组。 list()
和tuple()
。前者是可变的,而后者是不可改变的。出于本工作的目的,您可以假设以后可以修改list()
,而tuple()
可能不会。
老实说,Python不能处理100k数据。一个简单的常微分方程将产生更多!
所以,你可以这样做:
将您的个别参数存储在元组中,以确保(a)数据完整性,以及(b)内存优化。
var = (35, 56, (123,23,213))
然后将您的var
添加到包含所有数据的列表中。
data_container = list()
data_container.append(var)
然而, .append(var)
并不是最有效的方式;每次附加数据时,都会强制在RAM中复制整个数据。更好的方法是事先初始化list
,然后再将数据插入其中。虽然为此,您需要知道您将收到多少数据输入,或者至少愿意设置最大值!
其工作原理如下:
data_container = [[]]*int(1e5) # A list of 100,000 rows.
之后,您可以使用函数添加到此列表中。这是一个简单的例子。虽然我传递了一个数字值,但您可以拥有任何想要的内容。不要忘记创建一个后门来摆脱循环!在这种情况下,后门是输入的值不是数字(即是字符串,或者只是空的)。另外,我没有在这里处理最大输入,我也没有使用任何条件。达到最大行数后,最终会得到IndexError
。您可以处理此错误并显示"达到的最大值"消息,或通过将列表连接到具有额外行的另一个列表来增加列表的容量。你的选择!
data_container = [[]]*int(1e1)
max_capacity = len(data_container)
ind = 0
def add2container(index, data):
data_container[index] = data
index += 1
return index
while True:
x = input('Enter x: ')
if a.isnumeric(): # A Python 3 feature.
ind = add2container(ind, float(x))
else:
break
我希望这能回答你的问题。但如果没有,请继续进一步询问/解释。