Python中反向拆分字符串时如何避免结果自动排序?
问题解决:正确反转字符串得到目标列表
你的代码输出不是自动排序导致的,是索引逻辑出错了。原代码里range(len(sub_string))生成的是0,1,2,对应-i就是0,-1,-2:
sub_string[-0]等价于sub_string[0],取的是第一个字符'C'sub_string[-1]取最后一个字符'C'sub_string[-2]取倒数第二个字符'D'
所以才得到['C','C','D']。
要得到原字符串的反转列表(即['C','D','C']),有几种简单方法:
方法1:用字符串切片(最简洁)
直接利用Python的切片语法反转字符串,再转成列表:
sub_string = "CDC" rstring = list(sub_string[::-1]) print(rstring) # 输出 ['C', 'D', 'C']
方法2:修正列表推导式的索引范围
把range(len(sub_string))改成range(1, len(sub_string)+1),让i从1开始到字符串长度:
sub_string = "CDC" rstring = [sub_string[-i] for i in range(1, len(sub_string)+1)] print(rstring) # 输出 ['C', 'D', 'C']
这里i取1、2、3,对应-i是-1,-2,-3,正好依次取字符串的最后一个、倒数第二个、第一个字符。
方法3:使用reversed()函数
reversed()会返回一个反转的迭代器,转成列表即可:
sub_string = "CDC" rstring = list(reversed(sub_string)) print(rstring) # 输出 ['C', 'D', 'C']
内容的提问来源于stack exchange,提问作者PRASANTH K
相关产品推荐
相关产品推荐

