【问题标题】:Question regarding double loops and enumerate关于双循环和枚举的问题
【发布时间】:2021-03-01 19:03:54
【问题描述】:

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

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

【问题讨论】:

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


    【解决方案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 替换为任何函数)来获取有关函数内部工作的更多信息(参数、返回的内容等)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-12-28
      • 2011-04-23
      • 1970-01-01
      • 2011-07-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多