我試圖以一種不尋常的方式(至少對我而言)操縱給定的串列。
基本上,我有串列a(也是影像 1),它有第一個索引作為主體。現在,我想遍歷其他索引,如果某個值與第一個索引中的某個值匹配,我想在第一個索引中插入該索引的子串列。
我不知道我是否足夠清楚,但目標應該是串列b(也是圖 2)。我認為這里應該使用遞回函式,但我不知道如何使用。大家覺得可能嗎?
原名單:
a = [[1,2,3],[2,5],[6,3],[10,5]]
預期輸出:
b = [[1,2,[2,5,[10,5]],3,[6,3]]]


uj5u.com熱心網友回復:
您可以使用字典來記錄每個數字第一次出現的位置,記錄在哪個串列中找到它,以及在哪個索引處。如果然后發現具有已經遇到的值的串列,則可以改變記錄的串列并插入匹配的串列。如果沒有匹配項(第一個串列就是這種情況[1,2,3]),則該串列將附加到結果中。
因為插入一個串列會影響其他的插入點,我建議先收集插入動作,然后逆序應用:
這是代碼:
def solve(a):
dct = {}
result = []
insertions = []
for lst in a:
found = None
for i, val in enumerate(lst):
if val in dct:
found = val
else:
dct[val] = [lst, i]
if found is None:
result.append(lst)
else:
insertions.append((*dct[found], lst))
for target, i, lst in reversed(insertions):
target.insert(i 1, lst)
return result
# Example run:
a = [[1,2,3],[2,5],[6,3],[10,5]]
print(solve(a))
輸出:
[[1, 2, [2, 5, [10, 5]], 3, [6, 3]]]
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/337320.html
標籤:Python 列表 python-2.7 递归
上一篇:找不到來自不是activity_main.xml的視圖
下一篇:Swift執行緒安全陣列
