[英]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.