的名單如下:算法,以抵消由於數據的列表數據
input = [1,1,1,1,5,5,3,3,3,3,3,3,2,2,2,5,5]
我想創建一種算法,能夠抵消一定數量的步驟的列表。例如,如果偏移= -1:
def offsetFunc(inputList, offsetList):
#make something
return output
其中:
output = [0,0,0,0,1,1,5,5,5,5,5,5,3,3,3,2,2]
重要提示:列表的元素是浮點數,它們不以任何進展。所以我實際上需要改變他們,我不能使用任何解決方法來獲得結果。
因此,基本上,該算法應替換爲0的第一組值(4「1」,基本上),然後它應:
- 檢測值 的下一個範圍的lenght
- 創建並行輸出向量,其值延遲一組
我大致描述了上述算法的方式是如何做。然而,我是Python的新手(甚至是一般編程的初學者),我已經逐漸認識到Python有很多內置函數可以使算法變得更加輕量和迭代。有沒有人有任何建議來更好地開發腳本來完成這種工作?這是我迄今寫的代碼(假設靜態偏移量爲-1):
input = [1,1,1,1,5,5,3,3,3,3,3,3,2,2,2,5,5]
output = []
PrevVal = 0
NextVal = input[0]
i = 0
while input[i] == NextVal:
output.append(PrevVal)
i += 1
while i < len(input):
PrevVal = NextVal
NextVal = input[i]
while input[i] == NextVal:
output.append(PrevVal)
i += 1
if i >= len(input):
break
print output
在此先感謝您的幫助!
更好的描述 我的列表將始終由值的「集合」組成。它們通常是浮點數,並且它們取的值,如低於該短例如:
Sample = [1.236,1.236,1.236,1.236,1.863,1.863,1.863,1.863,1.863,1.863]
在這個例子中,第一組(具有值「1.236」)是長4,而第二個是長6 。當偏移量= -1時,我希望得到的結果是:
- 前4個元素中的值「0.000」
- 第二個6個元素中的值「1.236」。
因此,基本上,這種「偏移」功能與相同的「結構」(長度範圍),但與由延遲值創建列表「偏移」倍。
我希望現在很清楚,不幸的是問題本身對我來說仍然有點愚蠢(加上我甚至不說英語:) :) 請不要猶豫,要求任何額外的信息來完成問題和使其更清晰。
你可以添加一個例子offset = -2嗎? – amit
當然。它會變成:'output = [0,0,0,0,0,0,1,1,1,1,1,1,5,5,5,3,3]'。基本上,假設第一個「(偏移量)相同的值集合」(例如,如果offset = -2,前兩組相同的值)將變爲0,而其餘的將具有相同的長度,但是「 (2)之前的值集合。 –
偏移量總是負值?或者「積極」的抵消意味着「向左移動」而不是向右移動? – amit