学习目标:
- lambda
-
len(list1)
- sorted_numbers = sorted(numbers)
- list.sort()
目录
sorted_numbers = sorted(numbers)
list.sort(key=None, reverse=False)
按照指定的函数排序----list.sort(key=函数)
sort() 函数的 key 参数可以接受一个函数,该函数用于指定排序的依据。这个函数会在排序过程中被调用,每次调用时传入列表中的一个元素作为参数,并返回一个用于排序的值。
words = ['apple', 'banana', 'orange', 'pear']
print(words) # 输出 ['pear', 'apple', 'banana', 'orange']
学习内容:
- lambda
-
len(list1)
- sorted_numbers = sorted(numbers)
- list.sort()
匿名函数 lambda表达式
lambda [参数]: 函数
不需要return
len(list1)
sorted_numbers = sorted(numbers)
list.sort(key=None, reverse=False)
按照指定的函数排序----list.sort(key=函数)
sort() 函数的 key 参数可以接受一个函数,该函数用于指定排序的依据。这个函数会在排序过程中被调用,每次调用时传入列表中的一个元素作为参数,并返回一个用于排序的值。
def get_length(word):
return len(word)
words = ['apple', 'banana', 'orange', 'pear']
words.sort(key=get_length)
print(words) # 输出 ['pear', 'apple', 'banana', 'orange']
my_list = [5, 2, 9, 1, 5]
my_list.sort()
print(my_list)
升序排列
降序排列
my_list = [5, 2, 9, 1, 5]
my_list.sort(reverse=True)
print(my_list)
1.自定义排序规则
sort()方法默认按升序排序,但有时你可能需要根据特定的规则进行排序。你可以使用key参数来指定一个函数,该函数将根据其返回的值来排序列表元素。例如,假设你有一个字符串列表,你想按字符串的长度进行排序
my_list = ["apple", "banana", "cherry", "date"]
my_list.sort(key=len)
print(my_list)
2.多重排序
有时候,你可能需要在不同的字段上进行多次排序。你可以通过多次调用sort()方法来实现这一点,或者使用sorted()函数的key参数来进行多重排序。例如,假设你有一个包含学生姓名、年龄和分数的列表,你想首先按分数降序排序,然后按姓名升序排序:
students = [("Alice", 25, 95), ("Bob", 30, 88), ("Alex", 25, 92), ("Eve", 22, 95)]
students = sorted(students, key=lambda x: (-x[2], x[0]))
print(students)
这将首先按分数降序排序,然后按姓名升序排序。
代码解释
对一个包含学生信息的列表进行排序。这段代码使用了Python的sorted()函数,并传递了一个自定义排序键(key)函数,这个函数使用lambda表达式定义。现在,让我详细解释每一部分的作用:
students 列表包含了元组,每个元组都有三个元素:姓名、年龄和分数。
sorted() 函数用于对 students 列表进行排序。排序的方式是使用 key 参数指定的函数来确定每个元素的排序键。
lambda x: (-x[2], x[0]) 是一个匿名函数,也称为 lambda 函数。它接受一个参数 x,这里 x 代表了列表中的每个元组(姓名、年龄和分数)。lambda 函数返回一个元组,其中包含两个值:第一个值是分数的负数(-x[2]),第二个值是姓名 x[0]。
排序过程首先按照分数降序排序,也就是按照 (-x[2]) 的值排序。这意味着分数高的学生会在前面。
[("Alice", 25, 95), ("Eve", 22, 95), ("Alex", 25, 92), ("Bob", 30, 88)]
如果两个学生有相同的分数,那么它们将按照姓名升序排序(x[0])。这是在排序相同分数的学生时的第二个排序条件。
[("Alice", 25, 95), ("Eve", 22, 95), ("Alex", 25, 92), ("Bob", 30, 88)]
最后,通过 print(students) 将排序后的 students 列表输出到控制台。
所以,输出结果就是按照分数降序排列,如果分数相同,则按照姓名升序排列的学生列表。这个示例演示了如何进行多重条件的排序,以满足不同排序标准。
三、再次进阶
或许有人问“假如我想按中文字的拼音排序,或者按姓名汉字的笔画多少排序,是否可以实现啊?”
是的,你可以实现按中文字的拼音或笔画排序。
1准备
要做到这一点,你需要使用Python的第三方库来进行中文排序。其中,cn_sort库可以帮助你实现这些需求。
首先,你需要安装名为'cn_sort'的Python库,它包含了用于按照中文词组的拼音和笔顺进行排序的功能。你可以使用pip来安装:
打开命令提示符
输入pip install cn_sort --upgrade
2按拼音排序
from cn_sort.process_cn_word import sort_text_list, Mode
names = ["张三", "李四", "王五", "赵六"]
# 使用 cn_sort 库对中文姓名按拼音进行排序
sorted_names = list(sort_text_list(names, mode=Mode.PINYIN))
print(sorted_names)
3按笔画排序
from cn_sort.process_cn_word
import sort_text_list, Modenames = ["张三", "李四", "王五", "赵六"]
# 使用 cn_sort 库对中文姓名按笔画进行排序
sorted_names = list(sort_text_list(names, mode=Mode.BIHUA))
print(sorted_names)
提示1:为了方便,你可以复制文中的完整代码并在你的代码编译器中运行。
提示2:请特别注意Python的代码缩进。因正确的缩进,对于代码的理解至关重要,所以请确保代码块正确缩进,以避免错误。
sort() 函数是 Python 中用于对列表进行排序的内置函数。它可以按照升序或降序对列表中的元素进行排序。sort() 函数会直接修改源列表,而不会返回一个新的排序后的列表。
sort() 函数的基本语法如下:
```
list.sort(key=None, reverse=False)
```
其中,key 和 reverse 都是可选参数。key 是一个用于排序的函数,reverse 是一个布尔值,用于指定是否按降序进行排序。
1. 按照默认方式排序
如果不提供任何参数,sort() 函数会按照默认方式对列表进行升序排序。默认排序是根据元素的大小进行排序,对于数字类型的元素,按照从小到大的顺序排序;对于字符串类型的元素,按照字母的顺序进行排序。
示例代码如下:
```python
numbers = [5, 2, 8, 1, 9]
numbers.sort()
print(numbers) # 输出 [1, 2, 5, 8, 9]
fruits = ['apple', 'banana', 'orange', 'pear']
fruits.sort()
print(fruits) # 输出 ['apple', 'banana', 'orange', 'pear']
```
2. 按照指定的函数排序
sort() 函数的 key 参数可以接受一个函数,该函数用于指定排序的依据。这个函数会在排序过程中被调用,每次调用时传入列表中的一个元素作为参数,并返回一个用于排序的值。
示例代码如下:
```python
def get_length(word):
return len(word)
words = ['apple', 'banana', 'orange', 'pear']
words.sort(key=get_length)
print(words) # 输出 ['pear', 'apple', 'banana', 'orange']
```
在这个例子中,我们定义了一个函数 get_length(),它返回一个单词的长度。然后我们使用这个函数作为 key 参数传递给 sort() 函数,这样列表中的元素会根据它们的长度进行排序。
3. 按照降序排序
如果想要按照降序排序,可以将 reverse 参数设置为 True。
示例代码如下:
```python
numbers = [5, 2, 8, 1, 9]
numbers.sort(reverse=True)
print(numbers) # 输出 [9, 8, 5, 2, 1]
```
在这个例子中,我们将 reverse 参数设置为 True,这样列表中的元素会按照从大到小的顺序进行排序。
需要注意的是,sort() 函数会直接修改源列表,而不会返回一个新的排序后的列表。如果想要获取一个新的排序后的列表,可以使用 sorted() 函数。
示例代码如下:
```python
numbers = [5, 2, 8, 1, 9]
sorted_numbers = sorted(numbers)
print(sorted_numbers) # 输出 [1, 2, 5, 8, 9]
print(numbers) # 输出 [5, 2, 8, 1, 9]
```
在这个例子中,我们使用 sorted() 函数对列表进行排序,并将排序后的结果赋值给 sorted_numbers。原列表 numbers 的顺序并没有改变。
总结一下,sort() 函数是 Python 中用于对列表进行排序的内置函数。它可以按照升序或降序对列表中的元素进行排序。sort() 函数会直接修改源列表,而不会返回一个新的排序后的列表。如果想要获取一个新的排序后的列表,可以使用 sorted() 函数。此外,sort() 函数还可以接受一个 key 参数,用于指定排序的依据。
学习时间:
学习时间为不运动的时候,作者咕咕了是去运动(无氧运动和有氧运动都做最好)了,请饶恕。
学习产出:
画工
python--2作业66,69,71,84;85;数据类型:int()float()TrueFalsestr()list()set()dict()tuple()class
python--1作业,注释、输入输出、运算符、运算结果、三目运算符、关系表达、多值交换、偶数、随机数、三目运算、if、elif、else、while、for、break、contince、pass http://t.csdnimg.cn/0KDeU
计算机网络第1章:计算机网络的概念、组成与功能;计算机网络的分类、标准化工作及相关组织
计算机网络第一章:性能指标:带宽、时延、时延带宽积、RTT、吞吐量、速率、信道利用率
计算机网络体系结构——PDU、SDU、PCI、协议、访问、接口、SAP
计算机网络分层结构——OSI/ISO、TCP/IP http://t.csdnimg.cn/hLrqY
2章选择、解答 http://t.csdnimg.cn/ONrER
通信基本概念:数据、信号、码元、信源、信道、信宿、速率、波特、带宽 http://t.csdnimg.cn/TKnyM
数据、信号、码元、信源、信道、信宿、速率、波特、带宽-通信基本概念
HCIA——30奈奎斯特定理、香农定理 http://t.csdnimg.cn/Yqtch
HCIA——20应用层:C/S、P2P、peer http://t.csdnimg.cn/4i4Og
HCIA——21C/S、P2P、peer的选择
DNS层次域名空间、域名服务器、域名解析的原理 http://t.csdnimg.cn/yeWd6
HCIA——23DNS层次域名空间、域名服务器、域名解析的原理的选择、解答 http://t.csdnimg.cn/RXPNV
HCIA——24FTP 的工作原理、功能、TFTP、控制连接、数据连接
HCIA——25FTP 的工作原理、功能、TFTP、控制连接、数据连接的选择、解答
HCIA——26E-mall、MIME、POP3、IMAP、电子邮件系统的组成结构、电子邮件的发送,接收过程、MIME 与SMTP 的关系 http://t.csdnimg.cn/smTaR
HCIA——27E-mall、MIME;POP3、IMAP的选择,解答 http://t.csdnimg.cn/xnsXP
HCIIA——28HTTP、万维网、HTML;万维网的工作过程;HTTP 的特点——无连接-TCP、无状态-Cookie、非持久连接-非流水线和流水线;HTTP 的报文结构 http://t.csdnimg.cn/cRcxY
- 技术笔记 1遍
- 有错误请指出,作者会及时改正