2017-02-12 133 views
-1

大圖:我有一個單獨的函數來插入元素列表'a',我需要一個for循環來確保這些插入/輸入/附加元素的數據組織爲一個不同的功能。基本上,我需要子列表中的前兩個元素與子列表的前兩個元素相鄰(如'b'和'c'所示)......以下每個子列表。這是爲了在畫布上畫兩條線有兩點。有沒有辦法讓一個列表上的For循環在列表的第二個元素處開始其循環(迭代)(跳過第一個元素)?

具體圖片:爲了做到這一點,我需要一種方法讓for循環從第一個元素和第二個元素開始迭代。然後我必須使用for循環的結果來形成我的行(如g所示)。如果這看起來很混亂,我很抱歉。

我想我可以通過簡單地創建一個除第一個輸入之外的所有東西組成的新列表,製作兩個for循環並使用兩個for循環的結果輸入到線構件中,但我需要確保沒有辦法只用一個for循環來做到這一點。

這裏有一些事情我一直在做:

a = [[366, 408, 'Help'], [143, 99, 'Me'], [695, 140, 'Please']] 

x1 = a[0][0] 
y1 = a[0][1] 
x2 = a[1][0] 
y2 = a[1][1] 


x2 = a[1][0] 
y2 = a[1][1] 
x3 = a[2][0] 
y3 = a[2][1] 

b = [x1, y1, x2, y2] 

c = [x2, y2, x3, y3] 

#print b 
#print c 

def draw_a_line(event): 
    for d in a: 
     e = d[0] 
     f = d[1] 
     for i in a[1:2]: 
      print i 
     h = a[1][0] 
     #print e 
     #print f 
     g=[e,f, ?, ?] 
+0

只是想指出,'a [1:2]'和寫'a [1]'1 [ – Nullman

+0

]是一樣的,如何迭代列表大小的索引(範圍),然後你可以使用索引搶下一個以及 – Nullman

+0

這真的很難理解,請考慮花一些時間來使它更清晰。 –

回答

0

如果你想訪問列表a的兩個元素的循環,你可以創建兩個新的迭代器和一個推進一個一步步。有關更多信息,請參閱itertools doc

import itertools x, y = itertools.tee(a, 2) next(y) for p in zip(x,y): print(p)

p依次等於:

([366, 408, 'Help'], [143, 99, 'Me']) ([143, 99, 'Me'], [695, 140, 'Please'])

,讓你可以在相同的步驟都指向座標。

相關問題