【发布时间】:2021-10-23 02:27:15
【问题描述】:
我有一个字符串string = 'cbAfeDihGlkJonMrqPutS',我想遍历它以产生'AbcDefGhiJklMnoPqrStu'。
我正在使用以下 for 循环来实现 'DefGhiJklMnoPqrStu,但是缺少预期的 Abc。
for i in (range(0, len(string), 3)):
print(string[i+2 : i-1 : -1], end='')
这似乎是一个问题,因为我的结束元素: i-1 : 中的-1,但是我想知道为什么反向迭代(步长为-1)并使用:i-1: 来捕获第一个元素(其中 i=0) 与向前迭代和使用 : i+1 : 捕获最后一个元素的工作方式不同。
我能够实现我想要的解决方案
for i in (range(0, len(string), 3)):
print(string[i:i+3:1][::-1], end='')
但是向前迭代和向后打印似乎是一种笨拙的方法。必须添加[::-1] 似乎是一个多余的步骤,[i+2 : i-1 : -1] 是否有效。
除了[i:i+3:1][::-1] 之外,还有更简洁的方法吗?
【问题讨论】:
-
''.join(sorted(list(string), key=str.lower)) -
''.join(sorted(string , key=str.casefold)) 应该会产生你想要的结果。