['27', ' 5', '6', ' 0', ' 0', '', '', '', '','','','','','34','32','','','','']
我希望我的輸出是這樣的。邏輯是用單個新物品替換4個連續的重複空串'',同時保留剩餘的物品。
['27', ' 5', '6', ' 0', ' 0', 'LOL','LOL', '34','32','LOL']
我很困惑,爲什麼這不僅賦予了輸出
['LOL','LOL','LOL']
我的代碼如下:
from itertools import groupby,repeat
L = ['27', ' 5', '6', ' 0', ' 0', '', '', '', '','','','','','34','32','','','','']
grouped_L = [(k, len(list(g))) for k,g in groupby(L)]
final_list = [z if x=='' else x for x,y in grouped_L for z in repeat('LOL',(y//4)) ]
print(final_list)
預期輸出背後的邏輯是什麼?你的代碼失敗,因爲'repeat(...,(y // 4))'將導致* zero *重複任何'y <4',所以左邊的表達式根本不被執行(一個循環超過零的項目不會產生迭代)。 –
「34」和「32」消失在哪裏?爲什麼不連續的「0」,「0」產生一個「LOL」呢? – poke
我的壞人。我忘了編輯它們。抱歉!! – void