Python 返回一个新列表,该列表将两个列表交错,但有一个扭曲

Python 返回一个新列表,该列表将两个列表交错,但有一个扭曲,python,list,Python,List,有人能告诉我我的代码在这个问题上出了什么问题吗。我不太确定你的代码出了什么问题,但是第二个和第三个if语句似乎使用了内置的列表反转功能,这是原始问题所禁止的 我要做的是确定较长列表的长度,然后向后遍历这两个列表 def back_interleave(first, second): if first == [] and second == []: return [] elif first == []: return second[::-1]


有人能告诉我我的代码在这个问题上出了什么问题吗。

我不太确定你的代码出了什么问题,但是第二个和第三个if语句似乎使用了内置的列表反转功能,这是原始问题所禁止的

我要做的是确定较长列表的长度,然后向后遍历这两个列表

def back_interleave(first, second):

    if first == [] and second == []:
        return []
    elif first == []:
        return second[::-1]
    elif second == []:
        return first[::-1]
    else: 
        newlist = []
        for i in range(len(first)-1, 0,-1):
            newlist.append(first[i])
            newlist.append(second[i])
        for j in range(len(second)-len(first)-1,0,-1):
            newlist.append(second[i])
    return newlist
def back_交错(第一、第二):
新列表=[]
#您希望遍历较长列表的长度
长度=最大值(长度(第一)、长度(第二))
对于范围内的x(长度):
#开始从列表的后面追加元素
索引=-1*(x+1)
如果x
代码中的问题是,当您使用范围函数时,停止值是独占的,即索引0在您的情况下变得独占。在j循环中,索引i处的值被存储,而不是索引j处的值

@CyanideTesla给出的代码对您的问题非常有效

def back_interleave(first, second):
    newlist = []
    # You want to iterate through the length of the longer list
    length = max(len(first), len(second))
    for x in range(length):
        # start appending elements from the back of the list
        index = -1*(x+1)
        if x < len(first):
            newlist.append(first[index])
        if x < len(second):
            newlist.append(second[index])
    return newlist