【CodeWars】刷题之The Poet And The Pendulum

介个题目有点长,大致意思是
1.给定了一个数组
2.要求将数组中最小的元素放在中间位置,第二小的元素放在它的右边,第三小的 元素放在最小元素的左边,以此类推。

def pendulum(values):
    for i in range(len(values)):
        for j in range(i+1,len(values)):
            if values[i]>values[j]:
                values[i],values[j]=values[j],values[i]
    if len(values)%2==0:
        i=len(values)/2
    else:
        i=len(values)//2+1
    result=[0]*len(values)
    result[i]=values[0]
    step=1
    for j in range(1,len(values),2):
        result[i+step]=values[j]
        result[i-step]=values[j+1]
        step=step+1
    
    return result

个人的粗鄙代码直接在这边,直观上很容易理解,就是按照题目要求的步骤写
但不知为何报错

Traceback (most recent call last):
  File "main.py", line 3, in <module>
    Test.assert_equals(pendulum([4,6,8,7,5]), [8,6,4,5,7])
  File "/home/codewarrior/solution.py", line 14, in pendulum
    result[i+step]=values[j]
IndexError: list assignment index out of range

希望各位路过的大神能够在评论区不吝赐教

接着是平台上大神的代码

def pendulum(values):
    values=sorted(values)
    
    return values[::2][::-1]+values[1::2]
【CodeWars】刷题之The Poet And The Pendulum【CodeWars】刷题之The Poet And The Pendulum 虚名御寇 发布了3 篇原创文章 · 获赞 0 · 访问量 31 私信 关注
上一篇:python之深浅拷贝


下一篇:python列表排序