【Python内置函数sorted】练习时遇到一个排序问题
本帖最后由 thepoy 于 2019-12-7 12:30 编辑**要求:**
给定一个由若干个随机整数列表,写一个函数,将此列表进行重新排序,奇数从小到大,偶数从大到小,奇数在前,偶数在后。
如:->
**我的代码:**
```python
a =
b = sorted(a, key=lambda x: not x % 2 and x * -1 or x)
# b = sorted(a, key=lambda x: x % 2 and x or x * -1)
print(b)
# 结果为
#
# 本想奇数在前,偶数在后,但结果是偶数在前,奇数在后
```
sorted怎么写key,能题目满足要求?
**补充**
已发现把排序条件由负数(-x)改为倒数(1/x)就能输出所要结果了,但是原理是什么呢?负数和倒数不应该是一样的吗?
看来我不适合学编程··· 行云丶尘伤 发表于 2019-12-6 11:57
看来我不适合学编程···
此话怎讲 本帖最后由 我心飞翔1995 于 2019-12-6 13:34 编辑
最简单的还是奇数偶数分出两个数组,分别排序,最后合到一起 关键还是要想办法把偶数的key增大到比奇数的key大,比如偶数的key加个大一点的数,比如
b = sorted(a, key=lambda x: (not x % 2) and (x * -1 + 2000) or x) thepoy 发表于 2019-12-6 12:38
此话怎讲
数学太差~
页:
[1]