【问题标题】:How to access next element in a list using a for loop [duplicate]如何使用for循环访问列表中的下一个元素[重复]
【发布时间】:2020-08-02 21:30:08
【问题描述】:

如果我有一个循环,例如:

for i in nums: 
    print(i) #print current item
    print(NEXT ITEM IN LIST FROM CURRENT POS)

如何让它打印当前项目,然后打印与当前项目相关的下一个项目?

我希望它打印每个第一个项目 + 下一个项目 因此 nums 1 2 3 4 5 的列表将打印: 1 2 3 4 5 不是 1 2 2 3 3 4 4 5 5

我希望它有意义

【问题讨论】:

    标签: python


    【解决方案1】:

    你可以使用enumerate:

    for idx, i in enumerate(nums):
        print(i) # print current item
        if idx < len(nums) - 1: # check if index is out of bounds
            print(nums[idx+1])
    

    关于如何在每次列表迭代中处理两个元素而不重复任何元素的后续问题,您可以使用range,步骤为2,例如

    for idx in range(0, len(nums), 2):
        print(nums[idx])
        if idx < len(nums) - 1:
            print(nums[idx+1])
    

    【讨论】:

    • 谢谢伙计!我编辑了我的问题以指定一些额外的内容,您知道如何更正吗?
    • 在您的示例中,您只打印每个元素一次。我看不出这与您最初的问题有何矛盾。
    • 当我在 nums 1 2 3 4 5 列表上运行代码时,它会打印如下:` 1 2 2 3 3 4 4 5 5 `
    • 这是您对所提问题的期望。
    • 是的,这是真的,但是我将如何让它打印当前元素和下一个元素,然后在循环的下一次迭代中不打印当前元素,而是打印之后的元素?以便在每次迭代中一次打印 1 2 3 4 5 但 2?我希望这是有道理的
    【解决方案2】:

    您可以通过您的列表zip

    for x, y in zip(nums, nums[1:]):
        print(x, y, sep='\n')
    

    【讨论】:

    • 这可能是实现这一目标的最“pythonic”方式。
    【解决方案3】:

    您应该对当前项目使用print(num[I]),对下一个项目使用print(num[I+1])。但是当我是列表的长度时,请确保不要访问下一个元素。

    【讨论】:

      【解决方案4】:

      你应该使用enumerate函数

      找到您的答案here。提到的问题已经有类似的帖子。

      【讨论】:

        猜你喜欢
        • 2010-09-24
        • 2010-09-24
        • 2021-07-13
        • 2020-08-15
        • 2023-03-29
        • 2021-09-24
        • 2023-03-07
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多