2017-07-05 91 views
-2

我試圖做類似下面的代碼東西遍歷和刪除

l=[0,1,2,3,4,5] 

for i in l: 
    print i,l 
    del l[0] 
    print l 

但是這個腳本提供了以下輸出(用於一個問題,我解決了最簡單的解決方案)的列表:

0 [0,1,2,3,4,5] 
[1,2,3,4,5] 
2 [1,2,3,4,5] 
[2,3,4,5] 
4 [2,3,4,5] 
[3,4,5] 

但我想要的是i繼續採取列表中的第一個值。

把事情的角度,我最初的問題,就像是一個巨大的名單:[0,0,..0,1,1...,1,2,2...,2,......],我想遍歷它做一個新的列表:

[0,l.count(0),l.count(0)+l.count(1),......] 

所以我想過做一個簡單的循環,並且計算l.count(i),然後跳轉到下一個數字。

+0

你已經證明不編譯代碼。請提供**實際代碼**。此外,你的例子沒有意義(不知道是否有錯別字)。用簡單的英語解釋你想要達到的目標。 –

+0

lnew只是一個錯字,只有一個列表l和第二段與問題無關,我把它放在那裏解釋我正在嘗試做什麼。 –

+0

第二段與你的代碼沒有任何關係(至少對我來說)。試着用實際的輸入和輸出來解釋。沒有代碼(在第二段中)。 –

回答

1

我不明白是什麼lnew是,但這裏是我的解決方案:

ll= [0,0,0,0,0,1,1,1,1,1,1,1,2,2,2,2,3,3,4] 
import numpy as np 
uniqs = np.unique(ll) 
newlist = [] 
for i in uniqs: 
    newlist.extend([i, ll.count(i)]) 
print (newlist) 

[0,5,1,7,2,4,3,2,4,1]

0
for i in xrange(0, len(l)): 
    print l[i], lnew 
    lnew = l[i:] 
    print lnew 

試試這個

-1
l=[0,1,2,3,4,5] 
lnew = l 
print ("List contents initially",l) 
for i in range(0, len(l)): 
    #print ("Before deleting..at ith ",i,".. location",lnew) 
    del lnew[0] 
    i -= 1 
    print ("After deleting ..",lnew) 
+1

這當然不起作用。 'lnew = l'不會像您暗示的那樣創建副本。 'del lnew [0]'只是刪除第一項。循環中的「i - = 1」沒有意義 - 循環立即恢復其值。 – phd