列表排序的三种方式

sort()方法:原地修改列表的排序方法

  • 注 1:“ 默认是升序” ,参数 reverse=True,表示将列表降序。
  • 注 2:“ 原地修改列表” ,不建立新列表的排序方法。意思就是说:排序前后,列表存储地址不会变, 使用 id 函数,查看前后列表地址。
  • 注 3:a.sort 不能用一个新的变量去接收,因为列表前后地址没变,是在原地修改列表。所以不可能用新的变量接收。append也是类似用法,不能用新的变量去接收。
>>> a = [20,10,40,30]
>>> print(id(a))
51969480
>>> a.sort()
>>> print(a)
[10, 20, 30, 40]
>>> print(id(a))
51969480
>>> b = [5,2,3,1,5,4]
>>> b.sort(reverse=True) #降序
>>> b
[5, 5, 4, 3, 2, 1]

sorted()方法:建立新列表的排序方法

  • 注 1:sorted 方法,属于内置函数。而不属于列表的方法。因此是:sorted(a)而不是 a.sorted()。
  • 注 2:sorted 方法, 重新建立新列表的排序,排序不是对本列表的排序,本列表并不会变,而是将排序后的列表存放在其他地址中。因此“可以用新变量接收” 。
  • 注 3:“ 默认是升序” , 参数 reverse=True,表示将列表降序。
>>> c = [20,10,40,30]
>>> print(id(c))
52034312
>>> d = sorted(c)
>>> print(d)
[10, 20, 30, 40]
>>> print(id(d))34
52033992
>>> e = [5,2,3,1,5,4]
>>> f = sorted(e,reverse=True)
>>> f
[5, 5, 4, 3, 2, 1]

reverse():列表反转,不排序

>>> x = [1,4,2,3,5]
>>> x.reverse()
>>> x
[5, 3, 2, 4, 1]

列表遍历、列表嵌套

列表遍历

遍历列表, for 循环比 while 循环更好。

列表嵌套

列表推导式

列表推导式,在日常编程中发挥着很重要的作用(尤其是利用python做数据清洗的时候),它能够简化我们的代码,极其好用,我这里将它的常见3种用法给大家总结一下。

一般形式

语法格式:[ expression for i in iterable ]

x = [1, 3, 5, 7, 9]
y = [i**2 for i in x]
print(y)

结果如下:

带if的列表解析式

语法:[ expression for i in iterable if…]

x = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
y = [i for i in x if i % 2 == 0]
print(y)

结果如下:

带if...else...的列表解析式

语法:[ expression if...else... for i in iterable]

x = [1, 2, 3, 4, 5, 6]
y = ["我是偶数" if i % 2 == 0 else "我是奇数" for i in x]
print(y)

结果如下:

列表赋值、浅拷贝、深拷贝

赋值

演示如下:

>>> li = [1,2,3]
>>> li2 = li
>>> id(li) == id(li2)
True
>>> li2[0] = 100
>>> li
[100, 2, 3]

浅拷贝

list(列表)的 copy 方法,实现的是浅拷贝。仅仅拷贝当前对象,而不会拷贝当前对象内部所关联的对象

演示如下:

>>> li = [1,2,3]
>>> li2 = li.copy()
>>> id(li) == id(li2)
False
>>> li2[0] = 100
>>> li2
[100, 2, 3]
>>> li
[1, 2, 3]

深拷贝

如果列表中元素是可变类型,此时,浅拷贝无法实现期望的效果。若期望 li2 的改变不影响li,我们可以采用“深拷贝”操作。“深拷贝”不仅拷贝当前对象本身,同时还会拷贝当前对 象,所关联的可变对象,一直拷贝到没有可变对象为止。

演示如下:

>>> import copy
>>> li = [[1,2],[3,4]]
>>> li2 = copy.copy(li)
>>> li2[0][0] = 666
>>> li
[[666, 2], [3, 4]]
>>> li2
[[666, 2], [3, 4]]
--------------------------------------
>>> li = [[1,2],[3,4]]
>>> li2 = copy.deepcopy(li)39
>>> li2[0][0] = 666
>>> li
[[1, 2], [3, 4]]
>>> li2
[[666, 2], [3, 4]]

列表中需要注意的地方

  • 注 1:列表元素可以各不相同,可以是任意类型。
>>> lis = [1,2.0,False,"abc"]
>>> lis
[1, 2.0, False, 'abc']
  • 注 2:列表大小可变,可以根据需要, 随时增加或者缩小列表。
  • 注 3:‘ 字符串’ 与‘ 列表’ 都是‘ 序列类型’ ,只不过“ 字符串” 是字符序列,“ 列表” 是任何元素的序列。

python基础(六):列表的使用(下)的更多相关文章

  1. Python基础数据类型-列表(list)和元组(tuple)和集合(set)

    Python基础数据类型-列表(list)和元组(tuple)和集合(set) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 本篇博客使用的是Python3.6版本,以及以后分享的 ...

  2. python基础数据类型--列表(list)

    python基础数据类型--列表(list) 列表是我们在后面经常用到的数据类型之一,通过列表可以对数据类型进行增.删.改.查等操作 一列表的增.删.改.查 1增: 1.1增加到最后   append ...

  3. python基础之列表list元组tuple

    作者:tongqingliu 转载请注明出处:http://www.cnblogs.com/liutongqing/p/7041763.html python基础之列表list元组tuple 列表li ...

  4. python基础之列表、字典、元祖等 (二)

    一.作用域 if 1==1: name = 'weibinf' print name 下面的结论对吗? 外层变量,可以被内层变量使用 内层变量,无法被外层变量使用 二.三元运算 result = 值1 ...

  5. Day2 - Python基础2 列表、字典、集合

    Python之路,Day2 - Python基础2   本节内容 列表.元组操作 字符串操作 字典操作 集合操作 文件操作 字符编码与转码 1. 列表.元组操作 列表是我们最以后最常用的数据类型之一, ...

  6. python基础4 列表和元组

    一. 列表列表:python基础数据类型之一:其他语言中也有列表的概念,js 数组,可索引,可切片,可加步长li = ['hello', 100, True, [1, 2, 3], {'name':' ...

  7. Python基础入门-列表解析式

    今天我们使用Python中的列表解析式来实现一些简单功能.好了关于列表解析式是什么?我的理解是它可以根据已有列表,高效创建新列表的方式.列表解析是Python迭代机制的一种应用,它常用于实现创建新的列 ...

  8. python基础之列表讲解

    列表是最常用的Python数据类型,它可以作为一个方括号内的逗号分隔值出现. 列表的数据项不需要具有相同的类型 如下图所示,创建一个列表,只要把逗号分隔的不同的数据项使用方括号括起来即可.(接下来的演 ...

  9. 【笔记】Python基础六:模块module介绍及常用模块

    一,module模块和包的介绍 1,在Python中,一个.py文件就称之为一个模块(Module). 2,使用模块的好处? 最大的好处是大大提高了代码的可维护性 其次,编写代码不必从零开始,我们编写 ...

  10. python基础六

    模块 1.定义: 模块:用来从逻辑上组织python代码(变量,函数,类,逻辑:实现一个功能),本质就是.py结尾的python文件(文件名:test.py,对应的模块名:test) 包:用来从逻辑上 ...

随机推荐

  1. 炒币亏损一万美金?不如抢SPC空投!

    币圈的市场可以用风云变幻来形容,1月9日的时候比特币震荡,其他币种争先上涨,连平时都不涨的币种都拉出了10%-20%的领先涨幅,市场惊呼牛市来了,但喜悦还没有维持一天,1月10日(昨天)市场就走向另一 ...

  2. 如何成为NGK超级节点?

    NGK这个 "超级节点" 到底是什么?什么是超级节点呢? 区块链网络中的每一个节点,其实就是存储数据的每一台电脑或者服务器终端.节点要完成新区块的生产.交易的验证与记帐.因此节点之 ...

  3. E百科 | 基于MEC的边缘AI服务

    简介: 阿里云边缘计算团队付哲解读5G下热门场景:边缘AI.作者:阿里云付哲,计算机科学与技术专业博士后,在流量检测.资源调度领域有深入研究,其论文<Astraea: Deploy AI Ser ...

  4. the import java.util cannot be resolve

    重新配置一下build path 的jre,如果不行的话就重新设置jre(在add library中installed JREs)

  5. oracle 查锁

    reference:https://www.cnblogs.com/XQiu/p/5212787.html--以下几个为相关表SELECT * FROM v$lock;SELECT * FROM v$ ...

  6. tesseract-ocr和tesseract.exe is not installed or it's not in your path问题解决

    一.解决方案: 1.http://www.ddooo.com/softdown/94968.htm   打开下载的压缩包,找到"tesseract-ocr-setup-3.02.02.exe ...

  7. Pyqt5——表格中隐藏的控件(Model/View/Delegate)

    需求:在TableView表格中点击单元格可以实现编辑功能.性别由LineEdite控件编辑,年龄由spinBox控件编辑. 实现:(1)使用Qt的model-view模式生成表格视图.    (2) ...

  8. Pyqt5——带图标的表格(Model/View)

    需求:表格中第一列内容为学生学号,为了突出学号的表示,在第一列的学号旁增加学号图标. 实现:(1)使用Qt的model-view模式生成表格视图. (2)重写代理(QAbstractItemDeleg ...

  9. Elastic App Search 快速构建 ES 应用

    公号:码农充电站pro 主页:https://codeshellme.github.io App Search 是 Elastic 家族中的一个产品,它可以帮助我们(基于 ES)快速高效的构建搜索应用 ...

  10. 部分rpm包总结描述

    acl-2.2.51-15.el7.x86_64 Commands for Manipulating POSIX(可移植操作系统接口 of unix) Access Control Lists.有ge ...