如何使用"和"结合两个条件在列表理解?

时间:2017-06-28 13:59:52

标签: python list-comprehension

我想返回一个已排序数字的列表,这样奇数就会出现,而偶数就会出现。

示例: my_sort([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

1 个答案:

答案 0 :(得分:2)

你误解了你的代码在做什么。

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