分享
三行代码  ›  专栏  ›  技术社区  ›  agnostic starfish

Python中的范围索引

  •  2
  • agnostic starfish  · 技术社区  · 1 月前

    我对python中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"
    

    谢谢你的时间:)

    1 回复  |  直到 1 月前
        1
  •  1
  •   OakenDuck    1 月前

    在第一个例子中发生的是:

    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 3次后结束( 2, 1, 0 ,到达时结束 -1个

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

    每当你投入 0 0个 你的清单,或第一项。会回来的 c, b 而不是 c、 乙,甲