ソートされたリスト内のすべての要素を印刷しようとしていますが、が一度だけになります。ソートされたリストから一意の数字を印刷する
作品以下の私のコードが、私は良い方法があると確信している:
def print_unique(alist):
i = 0
for i in range(len(alist)):
if i < (len(alist)-1):
if alist[i] == alist[i+1]:
i+=1
if alist[i] == alist[i-1]:
i+=1
elif alist[i] == alist[i-1]:
i+=1
else:
print alist[i]
else:
if alist[-1]!= alist[-2]:
print alist[-1]
randomlist= [1,2,3,3,3,4,4,5,6,7,7,7,7,8,8,8,9,11,12,14,42]
print_unique(randomlist)
これは
1
2
5
6
9
11
12
14
42
例えばを生成すべての値は1行に1回しか表示されません。
Martijnのコードは非常に効率的ですが、(あなたのコードのように) 'alist'はすでにソートされていると仮定します。 –
@MartijnPieters OPの結果には、重複していない項目のみが含まれます。あまりにも問題がうまく配信されていない悪いです。したがって、偽装へのリンクは実際には問題を解決しません。あなたが提案したソリューションの少し修正された拡張はそれを行います: 'print [k for k、groupbyのg(ランダムリスト)len(list(g))== 1]' –
@MosesKoledoye:そうです、はい。明確な問題陳述書を含めないことによって、全面的に非難する。 –