2013-12-18 101 views
0

我想知道C++中“i”和“j”的等价物在python中是什么。我试图做的是将每个数字添加到另一个数字中(例如下面的例子:[2 + 1],[4 + 3],[6 + 5]),我试图教自己python离开了互联网,我无法找到如何做到这一点。 [下面的例子是行不通的。]i和j等价于python

even = [2,4,6] 
odd = [1,3,5] 
both = [] 
for i in range even[]: 
    for j in range odd[]: 
     if(i==j): 
      both.append(even[i] + odd[j]) 
print(both) 

我试着这样做:

for number1 in even: 
    for number2 in odd: 
     if(number1==number2): 
      both.append(number + number2) 

,但如果数字本身是平等的这只执行加法,这不是我想要的。任何帮助,将不胜感激。谢谢!

+1

'对于范围甚至[]'是无效的语法。这将是'我在范围内(len(even)):',但这是非常“unpythonic”。 – mgilson

+0

@mgilson他们在问题中指出它是无效的。我假设它的目的是伪代码。 – SethMMorton

+0

@SethMMorton - 是的,我知道。我想指出正确的python *语法,即使它不是解决问题的最佳方法。为此,我在下面留下了一个答案:) – mgilson

回答

7

你在Python做到这一点的方法是使用zip

for number1, number2 in zip(even, odd): 
    ... 

这里有一个列表理解一个完整的例子:

both = [number1 + number2 for number1, number2 in zip(even, odd)] 

我猜想,至少90%的时间你可以在其他类似C语言的循环中使用索引,你可以使用各种内建函数和/或python for for循环的“for-each”特性来避免它。

+0

像一个魅力工作。万分感谢! – rafiki

+0

@rafiki - 当然没问题。享受学习Python。这是一个爆炸! – mgilson

+0

@rafiki说“谢谢”最好通过接受一个问题在Stack Overflow上完成。 – glglgl

1

为什么你不工作:

在Python中,你通常在一个列表,元组,无论和迭代结果是内容,而不是指标迭代。

如果你需要索引,你可以遍历range(len(...)),或者你可以做for index, item in enumerate(l),但在大多数情况下有更好的方法,比如the excellent answer by mgilson

0

zip是一种有用的方法..另一种解决问题的方法是使用map方法。

z = [x for x in map(sum,zip(even,odd))]