我是編程新手,並且遇到了一個我正在用python編寫的算法的問題。它首先從一系列變量(每個變量都包含一個列表)組裝一個列表,並且我需要它能夠在一個序列中多次調用同一個變量。然後,它的進程列表就像這樣:如果某些列表組件是相同的,如何讓列表處理函數避免重複操作?
a = [1, 2, 3]
b = [4, 5, 6]
c = [a, b]
def function(input):
return output
使function(c)
回報[[1, 2, 3, output_a1], [4,5,6, output_b1]]
如果有人想了解更多有關的功能,我會很樂意提供更多的信息,但我的故障排除這一步使我相信源頭問題相當簡單。我遇到的問題是,如果我把我的主列表相同的變量多次像這樣:c = [a, b, a]
,我想function(c)
返回:
[[1, 2, 3, output_a1],
[4, 5, 6, output_b1],
[1, 2, 3, output_a2]]
然而,function()
過程a
所有實例,當它遇到剛一個,讓我得到:
[[1, 2, 3, output_a1, output_a3],
[4, 5, 6, output_b1],
[1, 2, 3, output_a1, output_a3]]
我發現兩種方法來解決這個問題,但我真的不是很滿意,我懷疑有一個更好的辦法。在第一種方式,我打印c
複製並粘貼到功能:
function_a([[1, 2, 3], [4, 5, 6], [1, 2, 3]])
,這將返回所需的輸出。另外,我可以創建另一個變量,其內容與a
,d = [1, 2, 3]
相同,並且具有c = [a, b, d]
,並且function_a(c)
將再次返回所需的輸出。我已經嘗試了各種各樣的東西,但似乎如果c
中的任何元素通過變量鏈接到另一個元素,那麼我遇到了這個錯誤。因爲我將用相當長的序列來運行這個算法,這些序列可能包含同一個元素的多個實例,所以我真的很喜歡用一種乾淨的方法來解決這個錯誤。任何建議都非常感謝,如果需要,我會提供有關該功能的更多詳細信息。謝謝閱讀!
'function'做什麼?你能告訴我們該函數的來源嗎? – thefourtheye
非常棒的第一個問題;)走的方式! – brandonscript
列表中只有一個實例。 'a'只是指向對象。當你改變'a'時,你會改變原始列表,所以所有指向它的變量都會被「修改」。你的功能需要在列表的副本上工作。 – Blender