介个题目有点长,大致意思是
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]
虚名御寇
发布了3 篇原创文章 · 获赞 0 · 访问量 31
私信
关注