为了账号安全,请及时绑定邮箱和手机立即绑定

列表的条件合并

列表的条件合并

慕妹3242003 2021-09-25 10:13:36
我正在尝试根据以下规则合并两个列表: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_datalist1=['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)预期输出:“一天一苹果,医生远离我”
查看完整描述

3 回答

?
qq_花开花谢_0

TA贡献1835条经验 获得超7个赞

您可以使用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]))


查看完整回答
反对 回复 2021-09-25
?
ibeautiful

TA贡献1993条经验 获得超5个赞

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,请使用更长的版本


查看完整回答
反对 回复 2021-09-25
?
陪伴而非守候

TA贡献1757条经验 获得超8个赞

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)

        break

print(s)


查看完整回答
反对 回复 2021-09-25
  • 3 回答
  • 0 关注
  • 158 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号