Python 如何使用“如何组合两个条件”;及;在列表理解中?

Python 如何使用“如何组合两个条件”;及;在列表理解中?,python,list-comprehension,Python,List Comprehension,我想返回一个排序后的数字列表,这样奇数排在第一位,偶数排在最后 示例:我的排序([1,2,3,4,5,6,7,8,9,10])=>[1,3,5,7,9,2,4,6,8] 我的解决方案是返回一个空列表 def my_sort(lst): sortd_lst = sorted([xfor x in lst if x % 2 == 1 and x % 2 == 0]) return sortd_lst 您误解了代码的作用 sortd_lst = sorted([xfor x in l

我想返回一个排序后的数字列表,这样奇数排在第一位,偶数排在最后

示例:
我的排序([1,2,3,4,5,6,7,8,9,10])
=>
[1,3,5,7,9,2,4,6,8]

我的解决方案是返回一个空列表

def my_sort(lst):
    sortd_lst = sorted([xfor x in lst if x % 2 == 1 and x % 2 == 0])
    return sortd_lst

您误解了代码的作用

sortd_lst = sorted([xfor x in lst if x % 2 == 1 and x % 2 == 0])
您的代码正在检查一个数字是否同时为奇偶,这显然是不可能的。因此,您将得到一个空列表。您需要单独检查这些条件

以下是您想要的:

sortd_lst = [*sorted(x for x in lst if x % 2 == 1), *sorted(x for x in lst if x % 2 == 0)]

这将分别生成奇数和偶数的两个单独的排序列表,然后将它们解压到您的
sortd_lst

一个数字如何可以是1 mod 2和0 mod 2这与列表理解无关。
x%2==1和x%2==0
怎么可能是真的,在列表理解内部还是外部?我将对解包进行一些研究。我曾经有过这个解决方案,它返回嵌套列表。我想我已经尝试了很多东西。“你的代码正在检查一个数字是偶数还是奇数,这显然是不可能的…”因此OP函数返回一个空列表。