2015-08-30 63 views
0

我有一个x,y元组列表。将这些原始元组想象为x和y的变化。我希望将这些随后的x和y更改应用于前一个元组。例如,在零期之后,x增加100并且y保持不变。因此,新的第一期将是(100,100)。在此之后,X保持不变和y通过100将其应用于修改后的第一项将导致(100,0)修订第二项下降等Python:如何修改列表中的元组?

xy = [(0,100), (100,0), (0,-100), (-100,0)] 

这是所期望的结果:

xy = [(0,100), (100,100), (100,0), (0,0)] 

如何解决列表的不可变性问题?我如何在循环中完成这项工作?

+0

名单并非一成不变。你可能意思是元组.. –

回答

5

该列表本身仍然是可变的;只是更换新的元组:

x, y = 0, 0 
for i, (dx, dy) in enumerate(xy): 
    x += dx 
    y += dy 
    xy[i] = (x, y) 

演示:

>>> xy = [(0, 100), (100, 0), (0, -100), (-100, 0)] 
>>> x, y = 0, 0 
>>> for i, (dx, dy) in enumerate(xy): 
...  x += dx 
...  y += dy 
...  xy[i] = (x, y) 
... 
>>> xy 
[(0, 100), (100, 100), (100, 0), (0, 0)] 
+0

谢谢你让深渊不那么深。 – user3308780