【发布时间】:2018-11-23 03:01:39
【问题描述】:
逻辑:将列表压缩为字符串,其中列表中重复两次的字母在结果字符串中重复指定次数。
例子:
-
['a','a',2,'b','c','c',3], -->aabccc -
['a,','a',2]-->aa -
['c','c',3]-->ccc.
我的代码是:
def run_length_decoder(in_list):
list=[]
for i in range(0,len(in_list)-1):
if in_list[i]==in_list[i+1]:
for x in range((i+2)-1):
list.append(in_list[i])
else:
list.append(in_list[i])
list.append(in_list[-1])
word = ""
for letter in list:
word += str(letter)
return word
这不起作用...因为使用['a', 'a', 2, 'b', 'b', 2, 'a', 'b', 'a'] 运行上述命令会返回'aaa2bbbbbb2aba',但应该返回'aabbaba'。
【问题讨论】:
-
for x in range((i+2)-1):应该是for x in range(in_list[i + 2]): -
您确定编码列表吗?感觉像是一种奇怪的编码方式。
-
"".join(["" if isinstance(letter, int) else letter for letter in list]) -
@Avezan,这行不通,因为
['c', 'c', 3]应该返回'ccc'。 -
@jpp 我出去了,不懂逻辑...
标签: python python-3.x list iteration