未在Python列表中编辑的数组元素

时间:2015-10-02 10:17:08

标签: python-2.7

sticks = int(raw_input());
stickList= map(int,raw_input().split()) ;
stickList = sorted(stickList);
for i in xrange(0,len(stickList)):
        stickList[i] = stickList[i]-stickList[0];
print stickList;

给定输入是:
6
5 4 4 2 2 8

为什么输出是这样的:[0,2,4,4,5,8] 而不是[0,0,2,2,3,6]

1 个答案:

答案 0 :(得分:2)

这是因为您正在更改for循环中的源stickList中的值。 在循环stickList[0]中的第一次迭代后,对于剩余的迭代,将变为0

正如ShadowRanger所提到的反向列表一样,

stickList = map(int, "5 4 4 2 2 8".split())
stickList.sort()
for i in reversed(xrange(len(stickList))):
    stickList[i] -= stickList[0]        
print stickList