2017-02-12 110 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'])

,让你可以在相同的步骤都指向坐标。

相关问题