【发布时间】:2017-12-11 22:16:38
【问题描述】:
我正在尝试使用 pickle 将一些数据保存到文件中。 我的起始列表格式如下:
a1 = [[190, 187, 27, 24, 4, 1, 0, 2, 6, 9, 60, 62], [190, 187, 27, 24, 4, 1, 0, 2, 6, 9, 61, 65], [190, 187, 27, 24, 4, 1, 0, 2, 6, 9, 60, 63], [190, 187, 27, 24, 4, 1, 0, 2, 6, 9, 61, 65], [190, 187, 27, 24, 4, 1, 0, 2, 6, 8, 48, 50], [190, 187, 27, 24, 4, 1, 0, 2, 6, 9, 61, 64], [190, 187, 27, 24, 4, 1, 0, 2, 6, 8, 48, 51]]
只保留子列表中的第一个和最后一个数字后:
a2 = [[190, 62], [190, 65], [190, 63], [190, 65], [190, 50], [190, 64], [190, 51]]
在我的 base-32 编码之后:
a3 = [['5x', '1x'], ['5x', '21'], ['5x', '1c'], ['5x', '21'], ['5x', '1o'], ['5x', '20'], ['5x', '1p']]
列表“a1”的文件有 224 个字节,列表“a2”有 84 个字节,列表“a3”有 182 个字节。为什么“a3”列表的文件比“a2”列表的文件大?引号会放大文件吗? 在我看来,例如,“5x”将花费不到“190”,同时会减少整个文件的重量。还有其他更有效的方法可以将此类数据存储在文件中吗?
【问题讨论】:
-
引号表示字符串文字。您正在存储字符串。
190是一个整数,可能使用 32 位。 “190”是一个字符串,它可能也使用 32 位,每个字符 8 位和一个空终止符。这些是粗略的估计,其他人应该能够用更好的参考来回答。
标签: python python-3.x list pickle