我有一个数字列表,其中第一个数字被附加到一个新列表,然后是最后一个,然后是第二个,然后是第二个数字,依此类推

时间:2017-11-17 06:10:25

标签: python python-3.x

以下是我的代码:

def alt_ele():
    mylist=list(input("Enter the elements: "))
    newlist=[int(i) for i in mylist]
    final_list=[]
    try:
        for x in range(len(newlist)):
            final_list.append(newlist.pop(0))
            final_list.append(newlist.pop())
            print(final_list)
    except IndexError:
        pass

现在我给的输入是:

I / N:输入元素:12345
我想要的输出是[1,5,2,4,3]
但我实际得到的输出是:

[1,5]
[1,5,2,4]

任何人都可以帮我弄清楚我哪里出错了?我试过了,但我自己也搞不清楚了 提前谢谢。

2 个答案:

答案 0 :(得分:2)

print语句需要在try / except子句之后:

def alt_ele():
    mylist=list(input("Enter the elements: "))
    newlist=[int(i) for i in mylist]
    final_list=[]
    try:
        for x in range(len(newlist)):
            final_list.append(newlist.pop(0))
            final_list.append(newlist.pop())
    except IndexError:
        pass
    print(final_list)

有了这个,我们得到了理想的输出。

我认为这不是最好的解决方案,所以这是避免try / except条款的一种方法:

def alt_ele():
    mylist=list(input("Enter the elements: "))
    newlist=[int(i) for i in mylist]
    final_list=[]
    switch = False
    while newlist:
        final_list.append(newlist.pop(-switch))
        switch = not switch
    print(final_list)

答案 1 :(得分:1)

您当前正在循环的每次迭代中打印列表。小心缩进。

应该是:

for x in range(len(newlist)):
    final_list.append(newlist.pop(0))
    final_list.append(newlist.pop())
print(final_list)