簡體   English   中英

如何在Python中將列表打包成字符串

[英]how to pack list into string in python

我是編程和python的新手,試圖弄清楚如何打包列表並從中獲取字符串值? 並且還可以確定列表的大小,該列表的大小應為4bytes,有人可以建議這樣做的方法。

      hello=[1,2,3,4]

謝謝

請參閱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()

取得尺寸:

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"

str.join()需要字符串的迭代器,因此您必須對其進行轉換

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

要么

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

假定您要將一個列表(其長度已知為一個小常數,例如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]
>>>

您從中調用join()的字符串是分隔符:

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

這將產生“ 1,2,3,4”。

列表理解是最清晰的方法,並且在大多數情況下是最快的方法

至於列表的大小(以字節為單位)-您真正想要做的是在列表上使用len()並檢查它是否為4。顯然,在Python中,int可以遠遠大於字節,因此,如果需要,請檢查每個值都適用0 => x => 255。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM