Python中的范围索引

3

我对Python中的Range函数的理解是:

  • Range(开始点, 结束点, 索引增加量)

当“索引增加量”为负数时,您基本上是从末尾向前走。

我的问题是:

  • 在反向操作时,“位置-结束点-”处的值是否不会被计算?

例如,如果我想反转字符串“a,b,c”(我知道你可以只做string[::-1],但这不是重点),那么该怎么做呢?

string = 'a,b,c'

strlist = list(string.split(","))

empty_list = []

for i in range((len(strlist)-1),-1,-1):
  print(strlist[i])

#this gets me "cba"


然而,当我在for循环中将终点从“-1”更改为“0”时,只有“cb”被打印出来。
string = 'a,b,c'

strlist = list(string.split(","))

empty_list = []

for i in range((len(strlist)-1),0,-1):
  print(strlist[i])

#this only gets me "cb"

感谢您的时间 :)

似乎你已经回答了自己的问题... - busybear
5
终点不包括在范围内,与起点不同。 - DYZ
1
这个回答解决了你的问题吗?Python中的反向索引? - busybear
1个回答

2
在第一个例子中发生的情况是这样的:
for i in range((len(strlist)-1),-1,-1):
  print(strlist[i])

len(strlst) - 1等于2,所以当你将其用作for循环的起始索引时,显然它将是最后一个字母,因为它的索引为0, 1, 2。这将返回所需的结果c, b, a

当你的终点为-1时,迭代器会减去1三次(2, 1, 0),并在达到-1时结束。

for i in range((len(strlist)-1),0,-1):
  print(strlist[i])

每当您将 0 作为终点时,它会停留在您的列表的位置 0 或第一个项目。这将返回 c, b 而不是 c, b, a。希望这可以帮助您。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接