您好,我正在运行以下代码
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
有人能解释一下为什么会发生这种情况吗?
发布于 2016-05-23 06:35:13
在这条语句之后:
arr = map(int,raw_input().strip().split(' '))
arr的值为:
[0, 1, 2, 3, 4, 5]
当您循环遍历arr
并使用x-1
时,第一个print语句变成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
如果您只想打印值:
for x in arr:
print(x)
发布于 2016-05-23 06:36:52
x
从0
转到5
。(请注意,它们是值,而不是索引。)因此,x - 1
从-1
开始,然后从0
继续到4
。arr[-1]
是arr
的最后一个元素(负索引从末尾开始倒数),然后用arr[0]...arr[4]
得到前5个元素。
基本上,你真的只是想
for x in arr:
print(x)
发布于 2016-05-23 06:43:22
尝试以下代码:
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
https://stackoverflow.com/questions/37383987
复制相似问题