为了感谢大家对“Python客栈”的关注与支持,我们每天会在留言中随机抽取三位粉丝发放6.6元小红包。快来参与吧!前些日子我们介绍了 python中基本的数据结构——元组,今天我们来看下和它相似的列表。列表是python中内置的数据结构,它的表现形式为方括号中不同数据的集合,用逗号分隔开。列表可以用来存储相同数据类型或不同数据类型。列表是可变的,这也是它如此常用的原因,然而在某些情况下,可变性需要特别注意。本文介绍了一些关于python 列表的重要操作,帮助你更好的掌握列表。一、从列表中删除元素的三种方法del()del可以根据索引位置,删除某个元素,也可以设定索引范围删除,亦可以删除整个列表,没有返回值按索引下标删除单个元素

a = [1, 2, 'x', 4, 5]del (a[0])print (a)# [2, 'x', 4, 5]

按索引范围删除元素

a = [1, 2, 'x', 4, 5]del (a[0:2])print (a)# ['x', 4, 5]

删除整个列表中的元素

a = [1, 2, 'x', 4, 5]del (a[:])print (a)# 输出空列表a[]a = [1, 2, 'x', 4, 5]del (a)print (a)# name 'a' is not defined 没有返回值,报错找不到对象

remove()remove()用于移除列表中某个值的第一个匹配项,没有返回值

a = [1, 2, 'x', 4, 5,'x']a.remove('x')print (a)# [1, 2, 4, 5, 'x']

注意:只会删除第一个匹配值,如有重复将不会删除pop()pop() 用于移除列表中的一个元素(默认最后一个元素),并且返回该元素的值。

a = [1, 2, 'x', 4, 5]b = a.pop()print (a)print (b)# [1, 2, 'x', 4]# 5

我们可以指定删除元素的索引值,不能超过列表总长度。

a = [1, 2, 'x', 4, 5]b = a.pop(0)print (a)# [2, 'x', 4, 5]a = [1, 2, 'x', 4, 5]b = a.pop(7)print (a)# 报错 pop index out of range

二、在列表中添加元素append()append()用于在列表末尾添加新的元素,被追加的元素在列表中保持原结构类型

a = [1, 2]b = ('x', 'y', 'z')a.append (b)print (a)# [1, 2, ('x', 'y', 'z')]

extend()extend()用于在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)。

a = [1, 2]b = ['x', 'y', 'z']a.extend (b)print (a)# [1, 2, 'x', 'y', 'z']

insert()insert()也用于在列表中添加新元素,但是它可以指定新元素的索引下标,例如我们可以在列表开头添加新元素。

a = [1, 2, 3, 4, 5]a.insert(0, 'a')print (a)# ['a', 1, 2, 3, 4, 5]

三、用'='复制列表我们可以复制一个列表并创建一个新的变量。

a = [1, 2, 3]b = a

但是,新变量“ b”只是指向“ a”值的指针。因此,a的任何变化也会改变b。让我们添加一个值来确认。

a = [1, 2, 3]b = aa.append(4)print (a)print (b)# [1, 2, 3, 4]# [1, 2, 3, 4]

四、用切片复制列表我们可以使用切片选择列表的所有索引来复制列表。

a = [1, 2, 3]b = a[:]

新的列表b包含与a相同的值,但在不同的内存位置。如果我们改变a,b不会受到影响。

a = [1, 2, 3]b = a[:]a.append(4)print (a)print (b)# [1, 2, 3, 4]# [1, 2, 3]

五、用sort()和sorted()对列表进行排序sort和sorted函数都可以用来对列表进行排序。

  • sort():对列表进行排序,但不返回任何内容。
  • sorted():返回列表的排序副本,但不对原始列表进行排序。

(1) sort()

a = [2, 0, 4, 3]b = a.sort()print (a)print (b)# [0, 2, 3, 4]# None

(2) sorted

a = [2, 0, 4, 3]b = sorted(a)print (a)print (b)# [2, 0, 4, 3]# [0, 2, 3, 4]

六、复制创建嵌套列表需要注意的在通过复制创建一个嵌套的列表时,我们需要注意元素的变化。原列表元素的任何修改都会改变被复制的列表。复制并没有创建新的列表对象

a = [1, 2]b = ['x', 'y']c = [a, b]a.append(3)b.pop()print (a)print (b)print (c)# [1, 2, 3]# ['x']# [[1, 2, 3], ['x']]

列表c由列表a和列表b组成,我们通过添加和删除一个元素更新了列表a和列表b。因此,列表c也被更新了。七、迭代过程中修改列表需要注意的列表是可迭代的对象,因此通常在循环中使用它们。迭代基于索引,因此如果在迭代时更新列表,则需要注意。下面的代码。 我们的需求是,如果a列表中同样的元素也位于列表b中,它将删除该项目。

a = ['x', 'y', 'z', 't']b = ['x', 'y', 'u', 'v']for item in a:if item in b:      a.remove(item)print (a)print (b)

执行代码后,我们希望列表a变为[‘z’,‘t’]。看看实际发生了什么。

['y', 'z', 't']['x', 'y', 'u', 'v']

为什么'y'没有被删除呢?原因是循环执行第一步删除’x'时,列表的索引会同步更新。列表a中的a[1]索引变成了'z',for循环会比较列表中的第二个元素,比较的是'z'和‘y‘。因此'y'就没被删除八、列表推导式(List comprehensions)列表推导式提供了一种简明扼要的方法来创建列表。列表推导式的语法比for循环更简洁,执行效率也更高。语法

list = [表达式 for 迭代变量 in 可迭代对象 [if 条件表达式] ]

if不是必须的,可以省略简单的示例,让b列表中只包含a列表的偶数元素

a = [1, 2, 4, 5, 7, 9, 11]b = [x for x in a if x % 2 == 0]print (b)# [2,4]

等价于

for item in a:if item % 2 == 0:      b.append(item)

1行代码总要比三行更简洁吧~~九、嵌套列表中的列表推导式我们可以在列表推导式中对嵌套列表进行迭代,比如有以下列表

vals = [[1,2,3],[4,5,2],[3,2,6]]

我们想得到嵌套列表中的每个元素,需要的输出为

vals_exp = [1,2,3,4,5,2,3,2,6]

用列表推导式来实现

vals = [[1,2,3],[4,5,2],[3,2,6]]vals_exp = [y for x in vals for y in x]print (vals_exp)# [1, 2, 3, 4, 5, 2, 3, 2, 6]

如果执行流程不够明确的话,可以先尝试用for循环操作,以下是对比流程图总结:列表与元组的用法,结构都很类似。区别主要有

1. 列表是动态的, 长度可变, 可以随意的增加、删减或改变元素, 列表的存储空间略大于元组, 性能略差与元组

2. 元组是静态的, 长度大小固定, 不可以对元素进行增加、删减或改变操作, 元组相对于列表更加轻量级, 性能稍优

如有错误,欢迎在留言区指正,感谢阅读,希望能帮助python的初学者了解数据结构。我们将尽快更新字典与集合的相关内容。

END

往期推荐

10个示例带你掌握python中的元组

阿里云盘又双叒叕上线啦!尝鲜下载

超级小白使用pip安装第三方库的正确姿势

详尽实用的 PyCharm 教程,这篇文章值得一看

转发,点赞,在看,安排一下?

python sorted下标_初学者掌握python 列表需要知道的操作相关推荐

  1. python sorted下标_全!Python基础之原生数据类型、判断和循环、函数和文件操作合集...

    长文预警! Python基础系列会将基础内容大致分为三到五个板块,每块着重讲一方面,知识不会很难,主要是以小例子的形式解读,如果你已经入门Python,希望可以帮你温习一下:如果你想入门Python, ...

  2. python sorted下标_【面试划重点】-- Python常见知识点

    分享工作中遇到的python知识点,估计很多人没太留意过这个知识点,但是对巩固很多基本语法和一些python中一些有用的方法很有帮助,工作中的问题我简化说下,大概就是下面需求: 有3个python列表 ...

  3. python sorted原理_深入理解Python的sorted

    1. 简介 sorted的派排序功能真强大,从前一直使用C++.Java以为其功能很强大了,但与Python一比,真的要差一些. 2. 函数定义 sorted(iterable, cmp=None, ...

  4. 初学者编写python用什么软件好_初学者编写python用什么软件

    初学者编写python用什么软件 以下是常用的几款Python代码编辑器和Python集成开发工具. 一.Python代码编辑器 1. Sublime Text Sublime Text是一款非常流行 ...

  5. python 编程该看那些书籍_初学者自学Python要看什么书?

    原标题:初学者自学Python要看什么书? 人工智能时代的来临让Python崭露头角,语法简洁.功能强大的特性更是吸引了很多人学习Python.由于某些条件的限制,有部分人选择自学Python,而需要 ...

  6. python源码图片_初学者用python爬凡客图片的源码

    python学习最大的动力就是能写出一些可以运行的代码.感觉python真是的很强大. 下边的这部分python代码是我用来爬凡客T的图片,代码是初学阶段写的,比较简陋,没做修改,之前是可以用的.翻出 ...

  7. 零基础python嵌入式开发_零基础Python入门教程

    第01课 python基础之python介绍 课时1python的职业方向和工资 试听 00 : 15 : 54 开始学习 课时2环境的安装 试听 00 : 14 : 16 开始学习 课时3基础班课程 ...

  8. python len函数_知识清单Python必备的69个函数,你掌握了吗?

    本文纲要 Python 作为一门高级编程语言,为我们提供了许多方便易用的内置函数,节省了不少开发应用的时间.目前,Python 3.7 共有 69 个内置函数,一些是我们耳熟能详的函数,另一些却不是很 ...

  9. 网易图灵学院python公开课_图灵学院 Python全系列教程全栈工程师 python视频教程下载...

    大家怎么说? 老师很好,我认为,若想学好python,应该多练.多想.多看.学习资料不能仅限于老师给定的这些内容,这些毕竟是入门资料 老师讲的真不错,对于我们这种小白来说 也比较容易懂,虽然有些时候自 ...

最新文章

  1. golang 读取 mysql null 字符串错误
  2. 支付宝变身新宠,钱包族再也“不差钱”
  3. 七牛云徐晶:低延迟互动时代看好WebRTC和SRT
  4. html中引入js柱状图,Echarts.js 图表在layui中的引用
  5. 二叉树相关知识及求深度的代码实现
  6. 个人工作13年的一些人生真实领悟
  7. c语言输出行末不得有多于空格,新人提问:如何将输出时每行最后一个空格删除...
  8. mysql update 跳过重复_MySQL通过UPDATE / DELETE整合重复的数据记录
  9. cad插件加载bplot成功用不了_新手入门,学习CAD必须掌握,教你使用标注命令,绘图效率翻一倍...
  10. 沃尔沃召回部分进口及国产车 共计131591辆
  11. 计算几何-Andrew法-凸包
  12. 蓝桥杯2018年第九届C/C++省赛B组第六题-递增三元组
  13. win11安装ie浏览器
  14. [国家集训队]Tree I
  15. gps面积测量仪手机版下载安装_手机gps面积测量仪
  16. 一年用掉近3000吨草莓的奈雪,背后是供应链数字化持续投入
  17. 【金融项目】尚融宝项目(七)
  18. 虚幻引擎4控制台变量和命令
  19. JavaScript中的“黑话” 1
  20. python元类_Python基础:元类

热门文章

  1. java 网格包,求大神解答:JAVA网格包布局管理器小程序问题
  2. Javascript第六章计时器练习【源码】第四课
  3. 请问重定向与请求转发有什么区别?
  4. 重庆理工大学图像处理实验三:图像分割
  5. zookeeper的acl权限控制_zookeeper权限acl与四字命令
  6. python程序memory error_Python memory error的问题
  7. matlab拉普拉斯算子边缘提取_使用平面光学器件进行图像边缘的差分检测
  8. python怎么画出好看的统计图_python数据可视化之如何用matplotlib画出漂亮美观的趋势图...
  9. delete语句与reference约束冲突怎么解决_一条简单的更新语句,MySQL是如何加锁的?...
  10. 服务器设置系统盘分页,服务器设置系统盘分页