Kurz gesagt, werden sie nicht gleich sein. Die Liste sollte besser funktionieren, es sei denn, Sie können dünn besetzte Listen verwenden, die in einem Dict implementiert werden könnten.
Wie von mehreren anderen erwähnt, summiert getsizeof die enthaltenen Objekte nicht.
Hier ist ein Rezept, das für Sie auf Standard-Python (3.0) -Typen funktioniert.
Compute Memory footprint of an object and its contents
Mit diesem Rezept auf Python 3.1 sind hier einige Ergebnisse:
aList = [[x,x] for x in range(1000)]
aListMod10 = [[x%10,x%10] for x in range(1000)]
aTuple = [(x,x) for x in range(1000)]
aDictString = dict(("%s,%s" % (x,x),x) for x in range(1000))
aDictTuple = dict(((x,x),x) for x in range(1000))
print("0", total_size(0))
print("10", total_size(10))
print("100", total_size(100))
print("1000", total_size(1000))
print("[0,1]", total_size([0,1]))
print("(0,1)", total_size((0,1)))
print("aList", total_size(aList))
print("aTuple", total_size(aTuple))
print("aListMod10", total_size(aListMod10))
print("aDictString", total_size(aDictString))
print("aDictTuple", total_size(aDictTuple))
print("[0]'s", total_size([0 for x in range(1000)]))
print("[x%10]'s", total_size([x%10 for x in range(1000)]))
print("[x%100]'s", total_size([x%100 for x in range(1000)]))
print("[x]'s", total_size([x for x in range(1000)]))
Ausgang:
0 12
10 14
100 14
1000 14
[0,1] 70
(0,1) 62
aList 62514
aTuple 54514
aListMod10 48654
aDictString 82274
aDictTuple 74714
[0]'s 4528
[x%10]'s 4654
[x%100]'s 5914
[x]'s 18514
Es scheint logisch zu folgen, dass die leistungsstärksten Speicher Option sein würde Verwenden Sie 2 Listen:
list_x = [0, 1, ...]
list_y = [1, 0, ...]
Dies kann sich nur lohnen, wenn der Arbeitsspeicher knapp wird und Ihre Liste voraussichtlich groß sein wird. Ich würde vermuten, dass das Nutzungsmuster würde die Schaffung (x, y) -Tupeln alle über den Ort wie auch immer, es kann so sein, dass Sie sollten wirklich nur tun:
tuples = [(0, 1), (1, 0), ...]
Alle Dinge gleich sind, wählen, was Ihnen erlaubt, schreibe den lesbarsten Code.
Was versuchen Sie wirklich, und warum? –
Das Wörterbuch wird offensichtlich größer sein, es hat mehr Elemente, ist eine komplexere Struktur usw. Es ist natürlich größer. Die Frage ist, warum willst du das wissen? –