这可能很愚蠢和基本,但是我如何获取列表edcba
当我尝试:
import string
letters = string.ascii_lowercase
letters[4:0:-1]
'edcb'
由于索引为[4,3,2,1],因此这在某种程度上是有意义的。但是,使用-1
会导致以下结果:
letters[4:-1:-1]
''
我知道我可以做"".join(reversed(letters[:5]))
或使用列表理解,但是我很好奇如何以消极的步骤来做。
答案 0 :(得分:5)
letters[4::-1]
,基本上是letters[4:None:-1]
以这种方式思考slice
:
[element to start at:
element to start excluding:
steps]
因此,通过在切片的第二部分中未明确说明0
,您是在告诉解释器从索引4
开始并执行步骤-1
,直到找不到任何元素。
另一种可视化方法是,如果您要向前进行并想要"vwxyz"
,则不会使用letters[21:25:1]
,而只会使用letters[21:]
转换为letters[21:None:1]
答案 1 :(得分:0)
import string
letters = string.ascii_lowercase
lent = len(letters)
data = []
for l in range(1,lent):
total = lent - int(l)
data.append(letters[total])
data.append(letters[0])
print(data)
答案 2 :(得分:0)
letters[4:-1:-1]
您意外得到一个空字符串的原因是,您已被要求从索引4
到字符串末尾(-1
),以{ {1}}。
在这种情况下,索引-1
与索引-1
等效,因此,您基本上已经完成了25
- python尝试评估切片中的第一项之所以完成,是因为您已经超越了界限。带有正增量的相同类型的表达式为letters[4:25:-1]
-它在开始之前就完成了。