我写了一个函数来合并两个对列表,在这种情况下,每个元素包含一个字符和一个数字。在匹配元素上合并列表
mergeTupleList [] blist = blist
mergeTupleList alist [] = []
mergeTupleList (a:ab:as) (b:bn:bs) =
if ab == b
then a:[] ++ bn:[] ++ mergeTupleList (a:ab:as) (bs)
else [] ++ mergeTupleList (as) (b:bn:bs)
listA = [('a',1),('b',1),('a',2),('b',1)]
listZ = [('b',1),('z',1),('b',1),('z',2)]
看来,在“其他”情况(b:BN:BS)是不是在一开始加载整个对列表,但短期的版本(BS),因为它已经被“然后过滤'条件。 我正在寻找一种方法将原始(b:bn:bs)列表传送给此功能。
输入和输出:
*Main> mergeTupleList ListA ListZ
[('a',1),('z',1),('a',1),('z',2)]
预期输出:
[('a',1),('z',1),('a',1),('z',2),('a',2),('z',1),('a',2),('z',2)]
对于澄清:
也许合并是不足够的话。对原
ListZ
中存在的ListA
中的每个(第二个)元素编写它后面的元素。
又如:
ListA = [1,0,3,0]
ListZ = [0,8,0,9]
*Main> mergeTupleList listA listZ
[1,8,1,9]
预期输出: [1,8,1,9,3,8,3,9]
请您详细说明该功能应该做什么?给定的'listA'和'listZ'的预期输出与我期望合并两个列表不太一样。 – Michail
也许合并不是合适的词。对于原ListZ中存在的ListA中的每个(秒)元素,都在其后面写入元素。 – Xui
你应该编辑这个问题本身。 – Michail