我得到了這個代碼
A = [1, 1, 1, 2, 2, 2, 3, 4, 5, 6, 6, 6, 7, 8, 8, 9]
B = [0 for b in range(16)]
skipped = 0
for i in range(16):
if A[i] == A[i-1]:
skipped = 1
else:
B[i-skipped] = A[i]
print(B)
輸出:
[1, 2, 3, 4, 5, 2, 7, 8, 9, 0, 0, 0, 0, 0, 0, 0]
它消除了雙打。但是,如果我得到一個陣列,其中 double 的索引更隨機,則它會失敗,例如:
陣列#2:
A = [1, 1, 1, 2, 2, 2, 3, 4, 5, 2, 2, 2, 7, 8, 8, 9]
輸出#2
[1, 2, 3, 4, 5, 2, 7, 8, 9, 0, 0, 0, 0, 0, 0, 0]
在輸出#2 中,索引 1 和索引 5 處的值為 2,但我只想消除所有雙打。
總和: 所以基本上我的演算法應該將值從陣列 A 復制到陣列 B 并消除所有與其索引無關的雙精度值。
編輯:我必須把它放在偽代碼中,所以我不能使用像 SET 這樣的轉換方法或函式
uj5u.com熱心網友回復:
你可以用set它來做:
A = [1, 1, 1, 2, 2, 2, 3, 4, 5, 6, 6, 6, 7, 8, 8, 9]
B = set(A)
print(B)
此代碼回傳一個集合。要將集合轉換為串列,您可以撰寫some_list = list(B).
另一種方式來做你需要的:
A = [1, 1, 1, 2, 2, 2, 3, 4, 5, 6, 6, 6, 7, 8, 8, 9]
B = []
for x in A:
if x not in B:
B.append(x)
print(B)
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/368314.html
標籤:Python
