2016-07-04 58 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

我不確定你在問什麼。你能提供一個例子嗎? –