在我的程序中,我得到 1 或 0 作為結果,我將其存盤在串列中。例如:
Input Data:
TestRun = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 ......]
Result = [0,0,0,0,1,1,1,0,0,0,1,1,1,.................]
現在,在這個無休止的程序中,我想存盤 1 或 0 的開始和結束位置。
Expected Output Result:
StartingPosZero = [1, 8,...]
EndingPosZero = [4, 10, .....]
StartingPosOne = [5, 11,.....]
EndingPosOne= [7, 13,....]
有人可以在不使用任何標準功能的情況下幫助我解決這個問題嗎?
uj5u.com熱心網友回復:
不確定這段代碼的目的是什么,因為在 Python 中索引從 0 開始。這段代碼肯定是重復的,但至少它完成了這項作業。不管,
result = [0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1]
StartingPosZero, EndingPosZero, StartingPosOne, EndingPosOne = [], [], [], []
startingBit = result[0]
StartingPosOne.append(1) if startingBit == 0 else StartingPosZero.append(1)
for i in range(len(result)-1):
currentBit = result[i]
nextBit = result[i 1]
if currentBit != nextBit:
if currentBit != 0:
EndingPosZero.append(i 1)
StartingPosOne.append(i 2)
else:
EndingPosOne.append(i 1)
StartingPosZero.append(i 2)
endingBit = result[-1]
EndingPosOne.append(len(result)) if startingBit != 0 else EndingPosZero.append(len(result))
print(StartingPosZero)
print(EndingPosZero)
print(StartingPosOne)
print(EndingPosOne)
uj5u.com熱心網友回復:
使用串列理解:
TestRun = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]
Result = [0,0,0,0,1,1,1,0,0,0,1,1,1]
Result.insert(0,99)
Result.insert(len(Result),99)
StartingPosZeros=[ x 1 for x in range(len(Result)-1) if Result[x 1] != Result[x] if Result[x 1]==0]
EndingPosZeros=[ x for x in range(len(Result)-1) if Result[x 1] != Result[x] if Result[x]==0]
StartPosOnes=[ x 1 for x in range(len(Result)-1) if Result[x 1] != Result[x] if Result[x 1]==1]
EndingPosOnes=[ x for x in range(len(Result)-1) if Result[x 1] != Result[x] if Result[x]==1]
print(StartingPosZeros)
print(EndingPosZeros)
print(StartingPosOnes)
print(EndingPosOnes)
輸出:
[1, 8]
[4, 10]
[5, 11]
[7, 13]
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/388313.html
上一篇:使用另一個類的引數呼叫方法
