我得到的
'Left 2, Right 4, Right 2, '
我想要的是:
'Left 2, Right 4, Right 2'
我的代码:
def get_combination(decoded):
#(eg: get_combination([-2, 4, 2])
#create an empty string
comb = ""
#For each elment in [decoded] check if the elm is < 0 or elm is >= 0
for elm in decoded:
if elm >= 0:
#if the elm is greater than 0 add to the string comb
# So the string will read (eg:Right 2)
comb += "Right " + str(abs(elm)) + ", "
elif elm < 0:
#if the elm is less than 0 add to the string comb
#So the string will read (eg: Left 4)
comb += "Left "+ str(abs(elm)) + ", "
return comb
#it returns 'Left 2, Right 4, Right 2, '
直到结尾不要放逗号。方法str.join
专为您而设。它在分隔符上被调用(例如str.join
),并接受要集中的可迭代字符串。例如:
', '
可以使用def get_combination(decoded):
def encode(x):
if x < 0:
return f'Left {abs(x)}'
return f'Right {x}'
return ', '.join(encode(x) for x in decoded)
将最后一行重写为>>
map
如果您想要一个真正难以辨认的单行代码(我不建议这样做,但是python非常容易编写):
map
甚至(将f字符串滥用到最大):
return ', '.join(map(encode, decoded))
仅使用', '.join(f'Left {abs(x)}' if x < 0 else f'Right {x}' for x in decoded)
这将删除倒数第二个字符,这就是您想要的,删除最后一个逗号。由于逗号后有空格,请删除倒数第二个而不是最后一个字符。