首页 > 解决方案 > 运行此循环时出现错误

问题描述

给你一个整数数组a。通过按以下方式b重新排列 的元素来生成一个新数组:a

b = [a[0], a[len(a)-1], a[1], a[len(a)-2, ...]

我的代码只循环一次,我只是从这里卡住了。我尝试过的如下

def alternatingSort(a):
    length = len(a)
    b = []
    for i in range(length):
        if i % 2:
            b.append(a[length-i])
        else:
            b.append(a[i])
    return b

如果我的输入是[1, 3, 5, 6, 4, 2],我的输出应该是[1,2,3,4,5,6] But i get [1, 2, 5, 6, 4, 3]

标签: pythonlistsorting

解决方案


你的逻辑不正确。这是更改最少的工作解决方案:

def alternatingSort(a):
    length = len(a)
    b = []
    for i in range(length):
        if i % 2:
            b.append(a[length - (i // 2) - 1])    # Updated.
        else:
            b.append(a[i // 2])                   # Updated.

    return b

a = [1, 3, 5, 6, 4, 2]
print(alternatingSort(a))

a = [1, 3 ,2]
print(alternatingSort(a))

推荐阅读