2016-04-12 79 views
-3

我得到一個數字列表90 - 480;這個範圍並沒有完全填滿。我的意思是,名單可能是90,91,92,94,95 ...等等,最多可達480人,預計失蹤93人。每次我收到清單時都會有很多重複的內容。另外,我一次最多可以獲得10個列表。我對清單的瞭解是,如果有100%的時間有重複,如果我將兩個重複中的第一個重複刪除1個值,則繼續掃描重複項,這會給我一個準確的清單。該列表可能如下所示:'90,91,92,93,95,95,96,98,100,100,102,102 .....'爲了使列表的這部分準確無誤,我需要更改第一個95到94,第一個100到99,和第一個102到101.如何搜索重複項的數字列表並將2個重複值的第一個值刪除1?

對不起,如果我問的地方不正確,但只是爲了這個問題;該列表在Excel中,但我可以使用Python或Linux,因爲我也可以訪問這兩者。謝謝!

+0

你有代碼,你試過了嗎? –

+0

它不是很清楚你的問題實際上是什麼...... –

+0

堆棧溢出是幫助不執行學校任務 – DespeiL

回答

0
>>> i = 0 
>>> a = [1,3,3,4,6,6] 
>>> numbers = [] 
>>> while i < len(a): 
...  if a.count(a[i]) == 1: numbers.append(a[i]); i += 1 
...  else: numbers.append(a[i]-1); a.remove(a[i]) 
... 
>>> numbers 
[1, 2, 3, 4, 5, 6] 

這會給你你想要的輸出,我敢打賭,有一個更好的方式來做到這一點,但在現階段,我不能找到它

+0

這正是我正在尋找的。非常感謝你! – user3299009

0

你可以嘗試基礎上,pairwise配方以下方法:

from itertools import tee, izip 

numbers = [90, 91, 92, 93, 95, 95, 96, 98, 100, 100, 102, 102] 
fixed = [] 
a, b = tee(numbers) 
next(b, None) 

for x, y in izip(a, b): 
    if x == y: 
     x -= 1 
    fixed.append(x) 
fixed.append(y)   

print fixed 

這將顯示:

[90, 91, 92, 93, 94, 95, 96, 98, 99, 100, 101, 102]  
相關問題