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

何かinlyですか?

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

私はどのように継続することができます' – ldevyataykina

+0

ない私は理解しての?キーワードcontinueを使用して、ループの次の繰り返しに移動できます。しかし、私はあなたがそれを知っていると思いますか? – joeButler

1

あなたはのようにスライスして実施してみてください:== 3 `LST [I-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

あなたが何を求めているのかは分かりません。あなたは例を挙げることができますか? –

関連する問題