Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 按列表中的顺序获取偶数和奇数_Python_Python 3.x - Fatal编程技术网

Python 按列表中的顺序获取偶数和奇数

Python 按列表中的顺序获取偶数和奇数,python,python-3.x,Python,Python 3.x,例如: def get_evens_at_back(a_list): if not a_list: return [] if a_list[0] % 2 == 1: return [a_list[0]] + get_evens_at_back(a_list[1:]) return get_evens_at_back(a_list[1:]) print("1.", get_evens_at_back([-1, 2, -3, 4, -2, 3

例如:

def get_evens_at_back(a_list):
    if not a_list:
      return []
    if a_list[0] % 2 == 1:
      return [a_list[0]] + get_evens_at_back(a_list[1:])
    return get_evens_at_back(a_list[1:])

    print("1.", get_evens_at_back([-1, 2, -3, 4, -2, 3, 5]))
    print("2.", get_evens_at_back([1, 2, -3, 4, 7, 4, -6, 3, -1]))
    print("3.", get_evens_at_back([-4, -2, 6, 8, 6, 2]))
    print("4.", get_evens_at_back([-3, -1, 3, 1, 7, 9]))
    print("5.", get_evens_at_back([]))
输出:

 1. [-1, -3, 3, 5]
 2. [1, -3, 7, 3, -1]
 3. []
 4. [-3, -1, 3, 1, 7, 9]
 5. []
我正在尝试获取一个新列表,列表中的所有奇数(按排序顺序)在前面,所有偶数(按排序顺序)在后面。如果列表为空,函数应该返回一个空列表。我不知道如何修复它

预期:

 1. [-3, -1, 3, 5, -2, 2, 4]
 2. [-3, -1, 1, 3, 7, -6, 2, 4, 4]
 3. [-4, -2, 2, 6, 6, 8]
 4. [-3, -1, 1, 3, 7, 9]
 5. []

您可以使用2元组的
排序
,将奇数放在第一位,然后根据每个类别的数字大小进行排序:

>>> lst = [1, 2, -3, 4, 7, 4, -6, 3, -1]
>>> sorted(lst, key=lambda x: (x % 2 == 0, x))
[-3, -1, 1, 3, 7, -6, 2, 4, 4]

您可以使用2元组的
排序
,将奇数放在第一位,然后根据每个类别的数字大小进行排序:

>>> lst = [1, 2, -3, 4, 7, 4, -6, 3, -1]
>>> sorted(lst, key=lambda x: (x % 2 == 0, x))
[-3, -1, 1, 3, 7, -6, 2, 4, 4]

这是一个相当可读的版本,它使用
过滤器
内置函数获取单独列表中的所有奇数/偶数值,对这些列表进行排序,然后组合它们(使用list
+
操作符):


这是一个相当可读的版本,它使用
过滤器
内置函数获取单独列表中的所有奇数/偶数值,对这些列表进行排序,然后组合它们(使用list
+
操作符):


如果第一个数字是偶数,您只需跳过它,然后在其余数字上递归。因此,您要删除所有偶数,而不是将它们移到后面。如果第一个数字是偶数,您只需跳过它,然后在其余数字上递归。所以你要删除所有的偶数,而不是把它们移到后面。