我是python中的新手。我不明白以下python程序的输出。
arr = []
for i in range(3):
arr.append(i * 2)
for arr[i] in arr:
print arr[i]
输出:
0
2
2 // Why also print 2??
这里,数组元素打印两次2
。这真的很奇怪。
请有人帮我清除疑虑。为什么程序打印两次2
?
答案 0 :(得分:2)
这是因为你的第二个循环使用数组本身作为循环变量,覆盖了最后一个值。应该这样写:
for x in arr:
print x
PS。因为你刚开始使用Python:今天就切换到Python 3!
答案 1 :(得分:2)
for arr[i] in arr:
所做的是将arr
的第一个元素和第二个元素重新分配给arr[i]
,此时arr[2]
为arr
。这就是为什么arr
的第一个和第二个元素没有改变,但最后一个元素的值是第二个。
Python中的for循环遍历可迭代的元素,即你的循环将逐字逐句地获取元素,如@Alexis所解释的。在这种情况下,它意味着它将返回arr[i]
的每个元素并将其分配给arr
。它也会对最后一个元素执行此操作 - 保持不变但已经等于// lib.cpp
template<typename T>
T arr_sum(T *arr, size_t size)
{
T temp=0;
for (size_t i=0; i != size; ++i){
temp += arr[i];
}
return temp;
}
的第二个元素。