关于双循环和枚举的问题

时间:2021-03-01 19:03:54

标签: python python-3.x for-loop

谁能解释一下这个完整程序的内部工作原理,比如我到达列表的最后一项之后发生了什么,第三行输出之后发生了什么? :)

list1 = [1,2,4,5]
for i,x in enumerate(list1):
    for y,z in enumerate(list1[i+1:],i+1):
            print(y,z)

输出:

1 2
2 4
3 5
2 4
3 5
3 5

Exit code: 0

1 个答案:

答案 0 :(得分:1)

enumerate(some_list, start=0) 将以 (index, list[index]) 的形式返回一个元组,有助于跟踪当前循环中使用的某些可迭代项中的项目索引。如果您指定 start 值(您在第 3 行的情况下正在执行此操作),则索引变量将从您指定的该值开始。

例如,让我们看看第一次迭代。

i,x = (0,1)

在这种情况下,您将在第 3 行拨打 enumerate(list1[0+1:], start=1)。 这意味着 y,z 将被赋值

y,z = (1, 2) 
# the 1 is because start=1, the 2 is because you are taking a slice 
# of the original list1 starting at index position 1 corresponding to the number 2

不确定这是否能回答您的问题。

您可以使用 help(enumerate)(或将 enumerate 替换为任何函数)来获取有关函数内部工作的更多信息(参数、返回的内容等)