Python列表常用方法(3-2)
【摘要】 Python列表常用方法(3-2)
目录
一.列表sort
1.sort的功能:
对当前列表按照一定规律进行排序
sort()
函数是Python中用于原地排序(in-place sorting)的列表方法。它对列表进行修改,将其按照升序排序。
2.sort的用法:
用法:list.sort(cmp=None,key=None,reverse=False)
参数:
- cmp可选参数,制定排序方案的函数,Python3中已经废弃,不要使用
- key-参数比较
- reverse-排序规则,reverse=True降序,reverse=False升序(默认)。
- cmp与key涉及函数学习,我们在日后讲解当前默认不传即可在Python3中,cmp参数已经被移除了。相反Sot方法现在接受一个可选的keys参数,用于指定一个函数,该函数接受一个元素,并返回一个用于排序的键,sort的方法是用这个键来确定列表中元素的顺序
- sort的用法-按照首字母排序
例如:
在上述示例中,我们首先创建了一个名为numbers
的列表,其中包含一些整数。然后,我们使用sort()
函数对列表进行排序。在排序完成后,numbers
列表的元素按照升序重新排列。
需要注意的是,sort()
函数是一个原地排序方法,它直接修改了原始列表,而不会创建新的排序列表。因此,排序后的结果将直接反映在原始列表上。
3.sort的注意事项:
- 列表中的元素类型必须相同,否则无法排序(报错)
拓展:key参数允许你指定一个函数,该函数将每个元素转换为一个可排序的键,然后
使用这些键来排序列表:
- 举个例子,我们定义了一个列表my_list,其中包含四个字符串元
素。然后,我们使用sort方法并传递key=len参数来对列表进行排序。这
个key参数指定了一个函数len,该函数接受一个字符串并返回它的长度。因此,sort方法将每个元素转换为它的长度,然后使用这些长度来排序列表。最后,我们打印排序后的列表,它按照字符串长度的升序排列
二.列表clear
1.clear的功能:
- 将当前列表中的数据清空
2.clear用法:
- 用法:list.clear()->该函数无参数,无返回值
- 使用clear函数比直接定义一个空列表更节省性能
当我们需要清空一个列表中的所有元素时,可以使用Python中的clear()
函数。下面是一个例子,演示如何使用clear()
函数清空一个列表:
- 演示:
- 输出:
在上面的例子中,我们首先创建了一个名为
fruits
的列表,其中包含四种水果。然后,我们使用clear()
函数清空了这个列表。最后,我们打印出清空后的列表,可以看到列表中不再包含任何元素,变成了一个空列表。
三.列表copy
1.copy的功能:
- 将当前的列表复制一份相同的列表,新列表与旧列表内容相同,但内存空间不同
2.copy的用法:
- list.copy()->该函数无参数,返回一个一模一样的但内存地址不同的列表
3.copy与二次赋值的区别:
- a = [1,2,3]
- b = a
- 二次赋值的变量与原始变量享有相同内存空间
- 当你把[1,2,3)]赋值给一个变量时,实际上是在内存中创建了一个列表对象并让这个变量指向该对象。当你再将此变量赋值给另一个变量时(比如a=[1,2,3];b=a),Python解释器会让这两个变量都指向同一个列表对象,因为它们现在都引用了相同的内存地址。所以对于列表[1,2,3]来说,只有一个实例被创建,且被多个变量所引用,因此这些引用的变量的内存地址是相同的。然而,当你使用b=[1,2,3]时,Python解释器会在内存中新建一个包含相同值的列表对象,并让b指向该对象,与此同时a仍然指向原来的那个列表对象。所以这时候a和b引用的不是同一个对象,它们的内存地址就不同了。
- copy函数创建的新列表与原始列表不是一个内存空间,不同享数据变更
- copy属于浅拷贝
4.什么是浅拷贝?
- 通俗的说,我们有一个列表a,列表里的元素还是列表,当我们拷贝出新列表b后,无论是a还是b的内部的列表中的数据发生了变化后,相互之间都会受到影响
- 只能对数据结构的第一层数据进行拷贝,如果数据结构里有更深层的数据,则无法进行拷贝。深层的数据原始变量与新变量是共享的,发生变化也是共享的
- 对于字典和列表:拷贝父对象不会拷贝对象内部的子对象
- 对于数字和字符串,等同于赋值操作
5.什么是深拷贝?
- 不仅对第一层数据进行了copy,对深层的数据也进行copy,原始变量和新变量完完全全不共享数据
- 对于列表和字典,完全拷贝父对象及其子对象
- 对于数字和字符串,等同于赋值操作
下面是一个例子:
输出:
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
作者其他文章
评论(0)