Python中的变量赋值

时间:2016-02-06 19:04:01

标签: python list variables dictionary

我是编程和python的新手,我正在寻找在我的程序中存储信息的最佳方式。

我希望为每件商品存储多个值,但不知道最好的方法是什么。它会是这样的:

数字:x位置,y位置,颜色

我遇到的问题是我可能拥有1,000,000个号码......我是否会制作一百万个词典?如果我这样做,我能否有效地召唤所有人?

1 个答案:

答案 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

我希望这能回答你的问题。但如果没有,请继续进一步询问/解释。