from itertools import groupby
def convert(k, g):
if k == " ":
return ''.join(g)
elif k == 'Y':
return "@{}".format(sum(1 for _ in g))
elif k == 'N':
return "#{}".format(sum(1 for _ in g))
def cipher(s):
return ''.join([convert(k, g) for k, g in groupby(s)])
cipher("YYNNNYYN NNYNNNY YYYYNYNN YNYNNNYY")
# '@2#3@2#1 #2@1#3@1 @4#1@1#2 @1#1@1#3@2'
在提出这个
groupby
解决方案时,我遵循了您对所需输出的描述。结果与输入的示例输出略有不同。你知道吗可以使用
pandas
按连续值和transform
值分组设置:
那你就可以了
输出
相关问题 更多 >
编程相关推荐