反转字符串列表时如何保留数值?现有代码出现数值反转错误
解决箭头序列反转问题
先说说你原来代码的问题:
arr[::-1]是反转整个列表的元素顺序,把第二个字符串挪到了第一个位置,第一个挪到第二个,这完全不是你要的「每个字符串内部序列反转」;- 后续处理箭头的逻辑和
x[5:]的截取操作完全错误,直接导致数字被截断(比如17变成71,16变成61)。
正确的思路是对列表里的每个字符串单独处理,步骤很清晰:
- 把单个字符串按
->分割成独立的数字字符串列表; - 反转这个数字列表的顺序;
- 再用
->把反转后的数字列表拼接回字符串; - 将处理好的所有字符串重新组成新列表。
实现代码(分步版)
arr = ['17 -> 16 -> 1 -> 8 -> 0', '5 -> 2 -> 3 -> 6 -> 0'] result = [] # 遍历每个字符串逐个处理 for s in arr: # 分割成数字列表 num_parts = s.split(' -> ') # 反转数字顺序 reversed_nums = num_parts[::-1] # 拼接回目标格式的字符串 reversed_str = ' -> '.join(reversed_nums) result.append(reversed_str) print(result)
运行后输出就是你预期的结果:
['0 -> 8 -> 1 -> 16 -> 17', '0 -> 6 -> 3 -> 2 -> 5']
简洁版(列表推导式)
如果喜欢更紧凑的写法,也可以用一行列表推导式搞定:
arr = ['17 -> 16 -> 1 -> 8 -> 0', '5 -> 2 -> 3 -> 6 -> 0'] result = [' -> '.join(s.split(' -> ')[::-1]) for s in arr] print(result)
核心就是针对每个字符串内部的元素做分割、反转、拼接,而不是错误地操作整个列表或者乱改箭头符号。
内容的提问来源于stack exchange,提问作者Mukesh Kumar Mishra
相关产品推荐
相关产品推荐

