列表的条件合并

我正在尝试根据以下规则合并两个列表:


list1 中的第一个元素应与 list2 中的最后一个元素合并,list1 中的第二个元素应与 list2 中的倒数第二个元素合并,依此类推。


如果 list1/list2 中的元素为 None,则另一个列表中的相应元素应保持在合并列表中。


我觉得我可能必须在这里使用链表,但我不确定。我试图通过遍历列表来找出解决方案,但我无法弄清楚这里的逻辑。


def merge_list(list1, list2):

    merged_data=""

    new_str=""

    #write your logic here

    for l1 in list1:

        for l2 in list2[::-1]:

            if l1 is None or l2 is None:

                pass

            else:

                new_str = l1+l2

                i=list2.index(l2)

                print(new_str)

            break

    #return resultant_data



list1=['A', 'app','a', 'd', 'ke', 'th', 'doc', 'awa']

list2=['y','tor','e','eps','ay',None,'le','n']

merged_data=merge_list(list1,list2)

print(merged_data)

预期输出:


“一天一苹果,医生远离我”


慕妹3242003
浏览 159回答 3
3回答

qq_花开花谢_0

您可以使用zip同时迭代两个列表:def merge_list(lst1,lst2):    s = ''    for x, y in zip(lst1, lst2[::-1]):        if y and x:            s += x + y        elif x:            s += x        elif y:            s += y        s += ' '    return s[:-1]list1 = ['A', 'app','a', 'd', 'ke', 'th', 'doc', 'awa']list2 = ['y','tor','e','eps','ay',None,'le','n']merged_data = merge_list(list1,list2)print(merged_data)# An apple a day keeps the doctor away您可以缩短它并使用列表理解,如下所示(但是,我更喜欢另一个更具可读性的):def merge_list(lst1,lst2):    return ' '.join(x + y if x and y else x if x else y for x, y in zip(lst1, lst2[::-1]))

ibeautiful

def fetch_index(list2, item_index):    x = list2[::-1]    return x[item_index]def merge_list(list1, list2):    list_3 = []    #write your logic here    for l1 in list1:        l2 = fetch_index(list2, list1.index(l1))        if l1 is None and l2 is None:            pass        elif l1 is None:            list_3.append(l2)        elif l2 is None:            list_3.append(l1)        else:            list_3.append(l1+l2)    return(list_3)list1=['A', 'app','a', 'd', 'ke', 'th', 'doc', 'awa']list2=['y','tor','e','eps','ay',None,'le','n']x = merge_list(list1,list2)print ' '.join(i for i in x)如果您不想使用 zip,请使用更长的版本

陪伴而非守候

list1=['A', 'app','a', 'd', 'ke', 'th', 'doc', 'awa']list2=['y','tor','e','eps','ay',None,'le','n']s=''new=''for i in list1:    for j in list2[::-1]:        if i==None:            i=''        elif j==None:            j=''        new=i+j        s=s+new+' '        list2.pop(-1)        breakprint(s)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python