奇怪的python数组输出

时间:2017-10-08 06:38:37

标签: python arrays

我是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

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; } 的第二个元素。