Python 从数字列表中提取并制作一个新的数字

Python 从数字列表中提取并制作一个新的数字,python,python-3.x,Python,Python 3.x,问题是: 给定一个整数列表,使第一个和最后一个整数相加,结果将是新列表的第一个整数,第二个和第二个到最后一个整数相加,结果将是新列表的第二个整数,依此类推。如果您的列表为奇数,请将中心号码保留在原始列表中 我有两个问题。我不知道如何让我的代码在获取第一个和最后一个值、将其添加到新列表中并一直运行到中间的同时保持迭代。还有,如果它是奇数,我如何让它迭代并停在中间值 以下是我目前的代码: myList = [1,2,3,4,5,6] newList = [] def switch(myList):

问题是:

给定一个整数列表,使第一个和最后一个整数相加,结果将是新列表的第一个整数,第二个和第二个到最后一个整数相加,结果将是新列表的第二个整数,依此类推。如果您的列表为奇数,请将中心号码保留在原始列表中

我有两个问题。我不知道如何让我的代码在获取第一个和最后一个值、将其添加到新列表中并一直运行到中间的同时保持迭代。还有,如果它是奇数,我如何让它迭代并停在中间值

以下是我目前的代码:

myList = [1,2,3,4,5,6]
newList = []

def switch(myList):
    for i in range(len(myList)):
        if len(myList) % 2 == 0:
            firstPart = newList+myList[0:+1]
            secondPart = myList[len(myList)-1:len(myList)+1]
            thirdPart = firstPart + secondPart
            return thirdPart
        else:
            if len(myList) % 2 == 1:
myList[:n/2]提取列表的第一部分[1,2,3]
反转(myList)反转初始列表[6,5,4,3,2,1],然后使用[:n/2]截断

然后,可以同时使用izip在两个列表上进行迭代,这使得您可以轻松地执行您想要执行的操作:

e、 izip([1,2,3],[6,5,4])=>e,f=(1,6),然后(2,5)然后(3,4)

对于奇数长度,我添加了一个特殊情况:

if len(myList)%2==1:
    new_list.append(myList[n/2+1])
myList[:n/2]提取列表的第一部分[1,2,3]
反转(myList)反转初始列表[6,5,4,3,2,1],然后使用[:n/2]截断

然后,可以同时使用izip在两个列表上进行迭代,这使得您可以轻松地执行您想要执行的操作:

e、 izip([1,2,3],[6,5,4])=>e,f=(1,6),然后(2,5)然后(3,4)

对于奇数长度,我添加了一个特殊情况:

if len(myList)%2==1:
    new_list.append(myList[n/2+1])

更新:在经历了所有的压缩、求和、映射、切片和反转之后,这个解决方案出乎意料地简单,实际上:

def switch(my_list):
    new_list = my_list[:]  # make a copy not to harm the original
    for i in range(len(my_list)//2):   # at the appropriate index ...
        new_list[i] += new_list.pop()  # ... add the element popped from the end
    return new_list

>>> switch([1,1,1,1])
[2, 2]
>>> switch([1,1,1,1,1])
[2, 2, 1]

更新:在经历了所有的压缩、求和、映射、切片和反转之后,这个解决方案出乎意料地简单,实际上:

def switch(my_list):
    new_list = my_list[:]  # make a copy not to harm the original
    for i in range(len(my_list)//2):   # at the appropriate index ...
        new_list[i] += new_list.pop()  # ... add the element popped from the end
    return new_list

>>> switch([1,1,1,1])
[2, 2]
>>> switch([1,1,1,1,1])
[2, 2, 1]

看起来很热,但是它是如何解决偶数/奇数需求的?你能给我解释一下它到底是做什么的吗?我想@schwobasegll提出的下面的解决方案是最优雅和最具pythonic的。看起来很热,但是它是如何解决偶数/奇数需求的呢?你能给我解释一下它到底是做什么的吗?我认为@schwobasegll下面提出的解决方案是最优雅和最具python风格的。你可能希望咨询一个简化任务的好方法。你可能希望咨询一个简化任务的好方法。我使用的是python 3,但是我会试试。我使用的是Python3,但我会试试。