Python-sort()/sorted()

本文详细对比了Python中list.sort()方法与sorted()函数的区别及用法,并通过具体示例介绍了如何利用lambda表达式进行复杂排序。
Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

sort 与 sorted 区别:

1 sort()是列表list的方法之一

    L.sort(key=None, reverse=False)

2 sorted() 函数可以对任意可迭代对象排序。返回一个列表.

    sorted(iterable,key=None,reverse=False)     

key接受一个函数,这个函数只接受一个元素,用于从每个元素中提取一个用于比较的关键字,默认为None。
reverse是一个布尔值,如果设置为True,列表元素将被倒序排列,默认为False。
例1:

    students = [('john', 'A', 15), ('jane', 'B', 12), ('dave','B', 10)]
    sorted(students,key=lambda s: x[2]) #按照年龄来排序
    结果:[('dave','B', 10), ('jane', 'B', 12), ('john', 'A', 15)]

例2:

    s = 'asdf234GDSdsf23'  #排序:小写-大写-奇数-偶数
    print("".join(sorted(s, key=lambda x: (x.isdigit(),x.isdigit() and int(x) % 2 == 0,x.isupper(),x))))

原理:

print(sorted([True,Flase]))===>结果[False,True]

Boolean 的排序会将 False 排在前,True排在后
1.x.isdigit()的作用是把数字放在前边,字母放在后边.
2.x.isdigit() and int(x) % 2 == 0的作用是保证奇数在前,偶数在后。
3.x.isupper()的作用是在前面基础上,保证字母小写在前大写在后.
4.最后的x表示在前面基础上,对所有类别数字或字母排序。

例3:一道面试题:

list1=[7, -8, 5, 4, 0, -2, -5]

要求1.正数在前负数在后 2.正数从小到大 3.负数从大到小

sorted(list1,key=lambda x:(x<0,abs(x)))
#list1.sort(key=lambda x:(x<0,abs(x)))

解题思路:先按照正负排先后,再按照大小排先后

您可能感兴趣的与本文相关的镜像

Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

从你的描述来看,你正在运行一个Python脚本`test.py`,但没有提供具体的错误信息或脚本内容。为了更好地帮助你解决问题,我将假设一些可能的场景,并提供解决方案。 --- ### 假设1:`test.py`中存在语法错误或逻辑错误 #### 解决方案 以下是一个简单的Python脚本示例,用于测试基本功能: ```python # test.py def main(): print("Hello, this is a test script!") # 添加更多测试逻辑 numbers = [3, 1, 4, 1, 5, 9] sorted_numbers = quick_sort(numbers) print("Sorted numbers:", sorted_numbers) def quick_sort(arr): if len(arr) <= 1: return arr pivot = arr[len(arr) // 2] left = [x for x in arr if x < pivot] middle = [x for x in arr if x == pivot] right = [x for x in arr if x > pivot] return quick_sort(left) + middle + quick_sort(right) if __name__ == "__main__": main() ``` #### 代码解释 1. **`quick_sort`函数**: - 使用了快速序算法对数组进行序。 - 递归地将数组分为小于、等于和于基准值的三部分,并合并结果。 2. **`main`函数**: - 打印一条欢迎消息。 - 调用`quick_sort`函数对数组进行序,并打印结果。 3. **入口判断**: - `if __name__ == "__main__":`确保脚本在直接运行时执行`main()`函数。 --- ### 假设2:`test.py`依赖外部库,但未正确安装 #### 解决方案 如果你的脚本依赖某些外部库(如`numpy`、`fealpy`等),需要确保这些库已正确安装。例如: ```bash pip install numpy fealpy ``` 以下是一个使用`numpy`的简单示例: ```python # test.py import numpy as np def main(): print("Testing numpy functionality...") array = np.array([1, 2, 3, 4, 5]) squared = np.square(array) print("Original array:", array) print("Squared array:", squared) if __name__ == "__main__": main() ``` #### 代码解释 1. **导入`numpy`库**: - 使用`numpy`创建数组并计算平方值。 2. **`main`函数**: - 打印一条测试消息。 - 使用`numpy`的`square`函数对数组元素求平方。 --- ### 假设3:脚本运行时出现错误 #### 解决方案 如果脚本运行时出现错误,请提供完整的错误信息。以下是一些常见问题及其解决方法: 1. **模块未找到错误**: - 错误信息:`ModuleNotFoundError: No module named 'xxx'` - 解决方法:安装缺失的模块,例如`pip install xxx`。 2. **语法错误**: - 错误信息:`SyntaxError: invalid syntax` - 解决方法:检查脚本中的语法问题,例如拼写错误或缩进问题。 3. **运行时错误**: - 错误信息:`TypeError`, `ValueError`, 等。 - 解决方法:调试脚本,确保变量类型和值符合预期。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值