2010-04-20 55 views
15

Python中是否可以像C/C++一樣在單個for循環中運行多個計數器?單個for循環中的多個計數器:Python

我想要的東西 - for i,j in x,range(0,len(x)):我知道Python解釋這個不同的原因,但爲什麼,但我怎麼會在一個for循環中同時運行兩個循環計數器?

+2

除了(因爲你可能不想用它,在這種情況下):'範圍(0,LEN(X))==範圍(LEN(X))'' – 2010-04-20 06:23:38

回答

13

您可能需要使用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其他提到的,拉鍊是有多個項目一般選項在單個循環中

+0

是zip'好,但在這種特殊情況下,「枚舉」是執行原始海報所需的常用方式。 – EOL 2010-04-20 08:10:24

27

您想要zip一般whi ch結合了兩個迭代器,正如@ S.Mark所說。但是,在這種情況下enumerate不正是你所需要的,這意味着你不必直接使用range

for j, i in enumerate(x): 

注意,這首先給出的x指數,所以我逆轉j, i