如何在python中将列表打包成字符串

时间:2012-01-28 19:44:22

标签: python

我是编程和python的新手,试图找出如何打包列表并从中获取字符串值?并且还可以确定列表的大小应该是4字节 有人可以建议一种方法来做到这一点。

      hello=[1,2,3,4]

由于

5 个答案:

答案 0 :(得分:3)

参见Dor的一个解决方案的答案,更多用于从列表中创建字符串的解决方案是:

repr([1,2,3,4])

import pprint
pprint.pprint([1,2,3,4])

使用SHA1

散列IP地址

假设每个八位字节都存储为列表的元素。

这个将IP地址转换为字符串,如192.168.0.1,并将其哈希。

hashlib.sha1(".".join([192,168,0,1])).hexdigest()

虽然这个将IP地址转换为压缩二进制格式,长度为4个字节,而散列

hashlib.sha1(struct.pack("!BBBB", *[192, 168, 1, 5])).hexdigest()

答案 1 :(得分:3)

获得规模:

from sys import getsizeof
getsizeof([1,2,3,4]) # 48 on my computer

对于容器来说,一般来说可能有点棘手。有关如何操作的信息,请参阅此代码段:

http://code.activestate.com/recipes/577504/

从列表中获取字符串有点不清楚,请尝试:

repr([1,2,3,4]) # "[1, 2, 3, 4]"

甚至

', '.join(str(i) for i in [1,2,3,4]) # "1, 2, 3, 4"

答案 2 :(得分:2)

str.join()需要一个字符串迭代器,所以你必须转换它

','.join(map(str, [1,2,3,4]))

','.join(str(i) for i in [1,2,3,4])

答案 3 :(得分:1)

假设您希望将一个列表(其长度已知为一个小常量,例如4,其元素都是小于256的无符号整数)打包成一个字符串,每个列表元素占一个字节:

包装:

>>> hello = [1, 2, 3, 4]
>>> import struct
>>> pkd = struct.pack("4B", *hello)
>>> pkd
'\x01\x02\x03\x04'

启封:

>>> struct.unpack("4B", pkd)
(1, 2, 3, 4)
>>> list(struct.unpack(">4B", pkd))
[1, 2, 3, 4]

打包未知长度的列表:

>>> pkd = ''.join(chr(i) for i in hello)
>>> pkd
'\x01\x02\x03\x04'

启封:

>>> [ord(c) for c in pkd]
[1, 2, 3, 4]
>>>

答案 4 :(得分:0)

您从中调用join()的字符串是分隔符:

",".join([str(item) for item in [1,2,3,4]])

这会产生“1,2,3,4”。

列表理解是最明智的方法,in most cases the fastest

关于列表的大小(以字节为单位) - 你真正想做的是在列表上使用len()并检查它是4.显然,在Python中,int可以远大于一个字节,所以,如果需要,检查每个值是否适用0 => x => 255。