2016-04-12 1 views
-3

数字のリストを取得します。この範囲は完全には満たされていません。私が意味することは、リストが90,91,92,94,95 ...などであり、最大480であり、欠落している93が予想されることです。私がリストを得るたびに、重複がたくさんあります。また、一度に最大10個のリストを取得することもあります。私がリストについて知っていることは、時間の100%重複がある場合、2つの重複のうちの最初のものを1つの値で削除した後、重複のスキャンを続けると、正確なリストが得られるということです。リストは'90,91,92,93,95,95,96,98,100,100,102,102 .....のようになりますので、リストのこの部分を正確に取得するには、変更する必要があります最初の95〜94、最初の100〜99、最初の102〜101です。重複する番号のリストを検索し、2つの重複した値の最初の1つを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]  
関連する問題