我想知道C ++中的“i”和“j”等价于python中。我想要做的是将一组中的每个数字添加到另一组中的相应一个(即在下面的示例中:[2 + 1],[4 + 3],[6 + 5])我正在尝试自学离开互联网的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)
但是如果数字本身相等,这只会执行加法,这不是我想要的。任何帮助,将不胜感激。谢谢!
答案 0 :(得分:7)
在python中执行此操作的方法是使用zip
:
for number1, number2 in zip(even, odd):
...
这是一个包含列表理解的完整示例:
both = [number1 + number2 for number1, number2 in zip(even, odd)]
我猜想至少90%的时间你会在其他类C语言的循环中使用索引,你可以在python中使用各种内置和/或“for-each”性质避免它python的for循环。
答案 1 :(得分:1)
为什么你的工作不起作用:
在Python中,您通常迭代一个列表,元组,等等,迭代结果是内容,而不是索引。
如果您需要索引,可以迭代range(len(...))
,或者可以for index, item in enumerate(l)
,但在大多数情况下,有更好的方法,例如the excellent answer by mgilson。
答案 2 :(得分:0)
zip是一种有用的方法。另一种解决问题的方法是使用map方法。
z = [x for x in map(sum,zip(even,odd))]