Python 起始范围()作为len(<;some_list>;)与起始范围()作为len(<;some_list>;)-1[包含/排除结束]

Python 起始范围()作为len(<;some_list>;)与起始范围()作为len(<;some_list>;)-1[包含/排除结束],python,python-3.x,python-2.7,list,Python,Python 3.x,Python 2.7,List,我似乎无法理解何时包含结束条件,何时不取决于开始作为列表长度或列表长度减去一(最后位置),而不使用步长值修改结束 我想从循环中的列表中弹出元素 (注意:我知道像这样设置range(0,len(颜色列表))也会起作用) 我尝试了这段代码,最后包括:- for color in range(len(colors_list),0,-1): colors_list.pop() print(colors_list) 我也试过了,但最终被排除在外:- for color in range(len

我似乎无法理解何时包含结束条件,何时不取决于开始作为列表长度或列表长度减去一(最后位置),而不使用步长值修改结束

我想从循环中的列表中弹出元素 (注意:我知道像这样设置
range(0,len(颜色列表))
也会起作用)

我尝试了这段代码,最后包括:-

for color in range(len(colors_list),0,-1):
    colors_list.pop()

print(colors_list)
我也试过了,但最终被排除在外:-

for color in range(len(colors_list)-1,0,-1):
    colors_list.pop() 

print(colors_list)

我理解第二次试验,因为第0个索引没有弹出,但是第一次试验是我不理解的,就像它不应该与第二次试验相同一样吗?考虑到它在第0个索引之前停止?但是第一个元素被弹出。

在这两种情况下,结尾都被排除在外。在第二种情况下,您运行循环的次数减少了一次,因为您将
-1
添加到启动条件中。结束值始终是独占的,开始值始终是包含的

只需列出并打印
范围,您将看到:

>>> colors_list = ["green","blue","yellow","pink","violet","black"]
>>> print(list(range(len(colors_list),0,-1)))
[6, 5, 4, 3, 2, 1]

>>> print(list(range(len(colors_list)-1,0,-1)))
[5, 4, 3, 2, 1]

没有
0
,您只是从一个
6
开始循环,另一个
5
开始循环。

两种情况下都不包括结束。在第二种情况下,您运行循环的次数减少了一次,因为您将
-1
添加到启动条件中。结束值始终是独占的,开始值始终是包含的

只需列出并打印
范围,您将看到:

>>> colors_list = ["green","blue","yellow","pink","violet","black"]
>>> print(list(range(len(colors_list),0,-1)))
[6, 5, 4, 3, 2, 1]

>>> print(list(range(len(colors_list)-1,0,-1)))
[5, 4, 3, 2, 1]
没有
0
,您只是从一个
6
和另一个
5
开始循环

Output : ["green"]
>>> colors_list = ["green","blue","yellow","pink","violet","black"]
>>> print(list(range(len(colors_list),0,-1)))
[6, 5, 4, 3, 2, 1]

>>> print(list(range(len(colors_list)-1,0,-1)))
[5, 4, 3, 2, 1]