【问题标题】:Multiple counters in a single for loop : Python单个for循环中的多个计数器:Python
【发布时间】:2010-04-20 06:12:48
【问题描述】:

在 Python 中是否可以像在 C/C++ 中那样在单个 for 循环中运行多个计数器?

我想要类似 --for i,j in x,range(0,len(x)): 我知道 Python 对此的解释不同以及为什么,但是我如何在一个 for 循环中同时运行两个循环计数器?

【问题讨论】:

  • 旁白(因为你可能不想在这种情况下使用它):range(0, len(x)) == range(len(x))

标签: python for-loop


【解决方案1】:

正如@S.Mark 所说,您通常需要zip,它结合了两个迭代器。但在这种情况下,enumerate 完全符合您的需要,这意味着您不必直接使用 range

for j, i in enumerate(x):

请注意,这首先给出了x 的索引,所以我已经反转了j, i

【讨论】:

    【解决方案2】:

    您可能想使用zip

    for i,j in zip(x,range(0,len(x))):
    

    例子,

    >>> x = [1, 2, 3]
    >>> y = [4, 5, 6]
    >>> zipped = zip(x, y)
    >>> print zipped
    [(1, 4), (2, 5), (3, 6)]
    >>> for a,b in zipped:
    ...     print a,b
    ...
    1 4
    2 5
    3 6
    >>>
    

    注意:这个问题的正确答案是enumerate,正如其他提到的,zip 是在一个循环中包含多个项目的一般选项

    【讨论】:

    • zip 很好,但在这种特殊情况下,enumerate 是原始发布者想要做的通常方式。
    【解决方案3】:
    for i,j in enumerate(x)
    

    【讨论】:

      猜你喜欢
      • 2012-01-11
      • 2011-01-21
      • 2010-11-14
      • 1970-01-01
      • 1970-01-01
      • 2012-05-30
      • 2021-09-27
      • 2019-04-15
      • 1970-01-01
      相关资源
      最近更新 更多