簡體   English   中英

遍歷Python中的列表

[英]Iterating through a list in Python

我正在嘗試遍歷列表,並獲取列表的每個部分,對其進行編碼,並在完成后將結果結合起來。 例如,我有一個字符串,該字符串產生一個列表,每個元素的長度為16個字符。

message = (u'sixteen-letters.sixteen-letters.sixteen-letters.sixteen-letters.')
result = split16(message, 16)
msg = ';'.join(encode(result.pop(0)) for i in result)

編碼函數采用16字節的字符串並返回結果。 但是,通過編寫方式,它只能編碼列表中一半的元素。

如果我嘗試理解:

result = [encode(split16(message, 16) for message in list_of_messages)]
result = ''.join(result)

這樣就可以立即發送整個列表。 我需要做的是將每個元素分別發送到encoding函數,獲取結果然后將它們連接在一起。

有一個簡單的方法可以做到這一點嗎?

您是否正在嘗試做這樣的事情?

';'.join(encode(i) for i in message.split('.'))

當然可能只是

';'.join(encode(i) for i in result)

如果您的split16函數足夠復雜。

我對您到底想做什么感到有些困惑,而您發布的代碼中缺少括號也使情況更加復雜:

result = [encode(split16(message, 16) for message in list_of_messages]

應該是:

result = [encode(split16(message, 16) for message in list_of_messages)]  

要么:

result = [encode(split16(message, 16)) for message in list_of_messages]  

我認為第二個可以做您想要的。

這段代碼:

msg = ';'.join(encode(result.pop(0)) for i in result)

之所以失敗是因為您在每一個步驟都遍歷result ,但是在pop每一個步驟都縮短它。 應該只是:

msg = ';'.join(encode(i) for i in result)

我不太清楚你在追求什么,但是

msg=";".join(map(encode,(message[i:i+16] for i in range(0,len(message),16))))

暫無
暫無

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

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