2015-08-30 61 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