您好我正在运行以下代码
arr = map(int,raw_input().strip().split(' '))
for x in arr:
print(arr[x-1])
我的输入是
0 1 2 3 4 5
我期待输出
0 1 2 3 4 5
但它正在显示
5 0 1 2 3 4
任何人都可以解释为什么会这样吗?
答案 0 :(得分:2)
在此声明之后:
<a data-title="Edit"><img alt="" src="dist/img/edit.png" ></a>
arr的价值是:
arr = map(int,raw_input().strip().split(' '))
当您循环[0, 1, 2, 3, 4, 5]
并使用arr
时,第一个print语句变为x-1
,实际上arr[0-1]
是最后一个元素。
arr[-1]
如果您只想打印值:
for x in arr:
print(arr[x-1])
# x = 0 => arr[0-1] => arr[-1] => 5
# x = 1 => arr[1-1] => arr[0] => 0
# x = 2 => arr[2-1] => arr[1] => 1
# x = 3 => arr[3-1] => arr[2] => 2
# x = 4 => arr[4-1] => arr[3] => 3
# x = 5 => arr[5-1] => arr[4] => 4
答案 1 :(得分:0)
x
从0
转到5
。 (请注意,它们是值,而不是索引。)x - 1
因此从-1
开始,然后继续0
到4
。 arr[-1]
是arr
的最后一个元素(负数指数从末尾向后计数),然后您获得带有arr[0]...arr[4]
的前5个元素。
基本上,你真的只是想要
for x in arr:
print(x)
答案 2 :(得分:0)
试试这段代码:
test = raw_input("Enter numbers separated by a space")
arr = map(int,test.strip().split(' '))
for x in arr:
print(x), #, prints on the same line in Python 2.7
输出:
0 1 2 3 4 5
您可以自己测试here
此问题的其他答案将提供不在同一行的输出:
0
1
2
3
4
5
答案 3 :(得分:-1)
首次迭代时,x=0
。
然后代码执行arr[x-1]
,其被解释为arr[0-1]
或arr[-1]
。在python中,负列表索引被解释为列表背面的索引,因此arr[-1]
与arr[len(arr)-1]
相同,即arr[4]
,即最后一个元素。