2016-07-04 96 views
0

我有列表lst = [1, 2, 3, 4, 5, 6, 3, 5, 3]和每个迭代,其中elem == 3我想打印字符串之前,而elem不是3再次。 我想Python中的循环出错

2 3: 
0 1 
1 2 
6 3: 
3 4 
4 5 
5 6 
8 3: 
7 5 

但我不知道,怎么去以前的字符串

for i, el in enumerate(lst): 
    if lst[i] == 3: 
     print i, el 
     i -= 1 

但它精心elem-1

回答

1

像这样的事情?

lst = [1, 2, 3, 4, 5, 6, 3, 5, 3] 
    previous = [] 

    for i, el in enumerate(lst): 
     if lst[i] == 3: 
      print i, el,":" 
      for p in previous: 
       print p[0] , p[1] 
      previous = [] 
     else: 
      previous.append((i,el)) 
+0

我怎么能继续下去,如果'LST [I-1] == 3' – ldevyataykina

+0

不知道我理解?您可以使用关键字'continue'移动到循环的下一个迭代。但我想你知道吗? – joeButler

1

您可以尝试使用片实施为:?

lst = [1, 2, 3, 4, 5, 6, 3, 5, 3] 

start_pos = 0 
for idx, val in enumerate(lst): 
    if val == 3: 
     print idx,val,":" 
     for p_idx, p_val in enumerate(lst[start_pos:idx]): 
      print p_idx+start_pos,p_val 
     start_pos = idx+1 
+0

如果'lst [i-1] == 3'我该如何继续? – ldevyataykina

+0

我不确定你在问什么。你能提供一个例子吗? –