如何将列表中连续递增1的特定子序列转换为字符串?
问题分析与修复
你的代码问题出在返回结果的格式化步骤:str("".join(str(elements)))会把整个列表直接转为带方括号的字符串(比如str([4,5,6,7])就是"[4, 5, 6, 7]"),空串""的join操作完全没起到作用,所以输出带方括号。
修复后的代码片段
def __str__(self): for x, y in itertools.groupby(enumerate(self.lst), lambda z: z[0] - z[1]): elements = [i[1] for i in y] if len(elements) > 1: return ", ".join(map(str, elements))
关键修改说明
- 用
map(str, elements)把序列里的每个数字转换成字符串类型 - 用
", ".join(...)将这些字符串以「逗号+空格」分隔的方式拼接,直接得到你需要的"4, 5, 6, 7"格式 - 移除了冗余的
str()和空串join操作,因为join本身返回的就是字符串类型
内容的提问来源于stack exchange,提问作者Jose
相关产品推荐
相关产品推荐

