Python中的元组等价和引用

时间:2017-02-09 00:50:22

标签: python memory reference tuples

假设我有一个文件:

apple,1,2,3
banana,1,2
orange,1,2,3
pineapple,1
watermelon,1,2,3

我的代码是:

class Fruit:
    def __init__(self,str):
        values = str.split(",")
        self._name = values[0]
        self._list = tuple(values[1:])

fruits = []
for line in file:
    fruits.append(Fruit(line))

我认为苹果,橙子和西瓜对象每个都有一个元组,它们彼此相等,但存储在不同的内存位置。如果我有一个类似的文件有100,000多行,并且如果相同顺序的相同内容的元组发生了很多,我将如何最好地优化它,以便当我解析文件时果实将引用相同的内存位置?

更新:

阅读评论,大家都说我应该这样做:

class Fruit:
    def __init__(self,name,items):
        values = str.split(",")
        self._name = name
        self._items = items

fruits = []
values_list = []
for line in file:
    values = line.split(",")
    name = line[0]
    values = set(line[1:])
    if values in values_list:
        fruits.append(Fruit(name,values_list[values_list.index(values)]))
    else:
        values_list.append(values)
        fruits.append(Fruit(name,values))

看起来有点丑......?

0 个答案:

没有答案