Python的Map函数2

时间:2016-05-23 06:31:38

标签: python dictionary input

您好我正在运行以下代码

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

任何人都可以解释为什么会这样吗?

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)

x0转到5。 (请注意,它们是值,而不是索引。)x - 1因此从-1开始,然后继续04arr[-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],即最后一个元素。