['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