我有一個有趣的問題來弄清涉及嵌套列表理解。我會編輯這篇文章的不必要的細節,因爲我試圖解決的問題可能看起來有點奇特。將兩個元組與嵌套列表理解結合起來
我有兩個元組,如下所示("X", "Y", "Z")
和("1", "2")
。這些內容將只會如上面所寫。
使用這兩個列表,我需要構造一個3元組列表,與上述兩個列表的內容的每個組合。其中一個元組的例子是("X2", "Z2", "Y1)
。請注意數字總是在字母后面出現。
我知道我需要使用列表理解,但似乎我需要有一個嵌套的列表理解不知何故,我不熟悉。
我開始用這樣的:
[(comb1, comb2, comb2) | {- What goes here? -}]
我不知道如何着手。我怎樣才能解決這個問題與嵌套列表理解?我相信嵌套列表理解是解決這個問題的最好方法,但如果你知道更好的方法,請解釋一下。
編輯了一些進一步的細節:
元組的這份名單是由函數輸出會是這個樣子:
init :: [(String, String, String)]
init = [(comb1, comb2, comb3) | {- What goes here? -}]
從初始化函數的返回值將被使用在一個更大的程序中,需要在這個3元組列表上執行任務。實際的兩個元組("X", "Y", "Z")
和("1", "2")
將被硬編碼到init
函數的列表理解中。
還有更多的組合不僅僅是笛卡爾產品。笛卡爾產品將導致[["X1","Y1","Z1"],["X2","Y2","Z2"]]
。但是,這些字母不必按順序排列,有些字母可能不會出現在其中一個結果中。 ["Z1", "X2", "X1"]
也是一個有效的組合
函數的實際輸出以及它的類型應該是什麼?如果你知道你的輸入始終是相同的輸入,爲什麼甚至有輸入?在我看來,這可以簡化爲將所有列表替換爲某個列表的長度(例如'[「1」,「2」]),然後將其中的每一個與其他輸入進行壓縮。 – user2407038
@ user2407038我在帖子中增加了一些額外的信息。 「輸入」不是真正的輸入,而是硬編碼到'init'函數中。 – JavascriptLoser
請解釋downvotes? – JavascriptLoser