点击上方"可乐python说"关注公众号,点击右上角 "..."选择"设为星标"第一时间获取最新分享!

前言

Hi,大家好,我是可乐,今天介绍一下 Python 列表 的相关操作,并附上相关案例代码,便于学习、理解。

列表简介

列表 (List) 是 Python 中最基本的数据类型之一,列表中的每个元素均会分配一个数字,用以记录位置,我们称之为 索引 (Indexes),索引值从 0 开始,依次往后计数。

列表使用中括号- [] 包裹,元素之间使用逗号- 分隔,其元素可以是数字、字符串、列表等其他任何数据类型。

列表同样支持索引、更新、删除、嵌套、拼接、成员检查、截取、追加、扩展、排序等相关操作,下面我们通过案例来学习。

初识列表

1、使用中括号定义一个空列表。

>>> def_list = []>>> def_list[]>>> type(def_list)<class 'list'>

2、使用内置方法 list() 定义一个空列表。

>>> def_list = list()>>> def_list[]>>> type(def_list)<class 'list'>

3、使用索引获取列表元素。

>>> def_list = ["my", "name", "is", "kele"]>>> def_list[0]    # 取第一个元素'my'>>> def_list[-1]   # -1 表示取最后一个'kele'>>> def_list[5]    # 超出索引值会报错Traceback (most recent call last):  File "", line 1, in IndexError: list index out of range

4、通过索引更新列表元素。

>>> def_list = ["my", "name", "is", "kele"]>>> def_list[-1] = "xuebi"  # 更新对应索引元素的值>>> def_list['my', 'name', 'is', 'xuebi']

5、使用 del 语句删除列表元素。

>>> def_list = ["my", "name", "is", "kele"]>>> del def_list[0]     # 删除第一个元素>>> def_list['name', 'is', 'kele']>>> def_list = ["my", "name", "is", "kele"]# 删除第一个元素 "my"# 再删除新列表的第二个元素 "is">>> del def_list[0], def_list[1]    >>> def_list['name', 'kele']

6、列表也可嵌套。

>>> nesting_list = ["my", "name", ["is", "kele"]]>>> type(nesting_list)<class 'list'>>>> nesting_list[2]['is', 'kele']# 怎么获取嵌套列表中的元素?>>> nesting_list[2][0]'is'

基础操作符

列表基础操作符可参照下表:

符号 说明

+

列表拼接

*

重复元素

in / not in

成员判断

[]

索引取值

[index:index]

列表截取

1、使用 + 拼接列表。

>>> def_list1 = ["my", "name"]>>> def_list2 = ["is", "kele"]>>> def_list1 + def_list2['my', 'name', 'is', 'kele']

2、使用 * 重复列表元素。

>>> ["repeat two"] * 2['repeat two', 'repeat two']

3、判断元素是否在列表中,是则返回 True,否则返回 False。

>>> def_list = ["my", "name", "is", "kele"]>>> "kele" in def_listTrue>>> "xuebi" in def_listFalse>>> "kele" not in def_listFalse>>> "xuebi" not in def_listTrue

4、使用索引取值。

>>> def_list = ["my", "name", "is", "kele"]>>> def_list[-1]   # -1 表示取最后一个'kele'>>> def_list[5]    # 超出索引值会报错Traceback (most recent call last):  File "", line 1, in IndexError: list index out of range

5、使用 : 截取列表,遵循左开右闭原则。

>>> def_list = ["Hi", "my", "name", "is", "kele"]# 截取第一至第二个元素(不包括第二个元素)>>> def_list[1:2]    ['my']# 截取第一至第四个元素(不包括第四个元素)>>> def_list[1:4]    ['my', 'name', 'is']# 超出索引值并不会报错>>> def_list[1:10]    ['my', 'name', 'is', 'kele']# 全列表截取(复制列表)>>> def_list[:]    ['my', 'name', 'is', 'kele']# 指定步长,截取列表# 步长为 2 ,表示每两个元素取一个元素>>> def_list[0:5:2]    ['Hi', 'name', 'kele']# 怎么反转列表?>>> def_list[::-1] ['kele', 'is', 'name', 'my', 'Hi']

列表基础函数

列表基础函数可参照下表:

函数 说明

len(list)

计算列表的长度

max(list)

返回列表中最大的元素

min(list)

返回列表中最小的元素

list(seq)

将其他序列转换为列表

1、计算列表长度。

>>> def_list = num_list = [1, 4, 3, 11]>>> len(num_list)4

2、返回列表最大值、最小值。

>>> def_list = num_list = [1, 4, 3, 11]>>> max(num_list)11>>> min(num_list)1

3、将其他序列列转换为列表。

>>> str_list = "Hi_kele">>> list(str_list)['H', 'i', '_', 'k', 'e', 'l', 'e']>>> num_list = "123456">>> list(num_list)['1', '2', '3', '4', '5', '6']# 数字类型为不可迭代对象,使用时会报错>>> num_list = 123456>>> list(num_list)Traceback (most recent call last):  File "", line 1, in TypeError: 'int' object is not iterable

列表自建方法

Python 中的 list 类提供了列表操作相关的自建方法,直接调用即可。

1、使用 append 方法给列表末尾追加元素。

# 使用语法:list.append(obj)>>> def_list = ["my", "name", "is", "kele"]>>> def_list.append(1)>>> def_list['my', 'name', 'is', 'kele', '1']

2、使用 count 统计某个元素在列表中出现的总次数。

# 使用语法:list.count(obj)>>> def_list = ["kele", "name", "is", "kele"]>>> def_list.count("kele")2>>> def_list.count("name")1>>> def_list.count("xuebi")0

3、使用 index 方法寻找某个元素在列表中第一次出现的索引值。

# 使用语法:list.index(obj)>>> def_list = ["kele", "name", "is", "kele"]>>> def_list.index("kele")0>>> def_list.index("name")1# 元素不在列表中会报错>>> def_list.count("xuebi")Traceback (most recent call last):  File "", line 1, in ValueError: 'xuebi' is not in list

4、使用 insert 方法在指定位置插入元素。

# 使用语法:list.insert(index, obj)>>> def_list = ["my", "name", "is", "kele"]>>> def_list.insert(0, "python")>>> def_list['python', 'my', 'name', 'is', 'kele']# 超出索引值不报错,将元素插入到列表末尾>>> def_list.insert(10, "xuebi")>>> def_list['python', 'my', 'name', 'is', 'kele', 'xuebi']

5、使用 pop 方法弹出列表中的某个元素,默认弹出最后一个元素。

# 使用语法:list.pop(index=-1)>>> def_list = ["my", "name", "is", "kele"]# 返回弹出的元素>>> def_list.pop()'kele'>>> def_list['my', 'name', 'is']>>> def_list.pop(0)'my'>>> def_list['name', 'is']# 超出索引值会报错>>> def_list.pop(10)Traceback (most recent call last):  File "", line 1, in IndexError: pop index out of range

6、使用 remove 方法删除列表中的某个元素,默认删除第一次出现的元素。

# 使用语法:list.remove(obj)>>> def_list = ["kele", "name", "is", "kele"]>>> def_list.remove("kele")>>> def_list['name', 'is', 'kele']>>> def_list.remove("xuebi")# 元素不存在会报错Traceback (most recent call last):  File "", line 1, in ValueError: list.remove(x): x not in list

7、使用 reverse 方法反转列表。

# 使用语法:list.reverse()>>> def_list = ["my", "name", "is", "kele"]>>> def_list.reverse()>>> def_list['kele', 'is', 'name', 'my']

8、使用 sort 方法对列表进行排序,使用语法 list.sort(cmp=None, key=None, reverse=False) 参数说明:

cmp -- 可选参数,如果指定该参数,则使用该参数的方法进行排序。

key -- 主要用于比较元素,只有一个参数,指定可迭代对象中的一个元素进行排序。

reverse -- 排序规则,reverse = True 降序, reverse = False 升序(默认)。

# 不指定参数,默认为降序>>> def_list = ["my", "name", "is", "kele"]>>> def_list.sort()>>> def_list['is', 'kele', 'my', 'name']# 指定为升序>>> def_list.sort(reverse=True)>>> def_list['name', 'my', 'kele', 'is']# 指定可迭代对象中的一个元素进行排序>>> def_list = ["my2", "name8", "is5"]# 按照序列的最后一个元素排序>>> def key_func(seq):...     return seq[-1]>>> def_list.sort(key=key_func)>>> def_list# 按照每个元素末尾的数字排序['my2', 'is5', 'name8']# 思考:怎么实现既按照字母排序,又按照数字排序?

9、使用 extend 方法扩展列表。

# 使用语法:list.extend(seq)>>> def_list1 = ["my", "name"]>>> def_list2 = ["is", "kele"]>>> def_list1.extend(def_list2)>>> def_list1['my', 'name', 'is', 'kele']

10、使用 copy 方法复制列表。

# 使用语法:list.copy()>>> def_list = ["my", "name", "is", "kele"]>>> def_list.copy()['my', 'name', 'is', 'kele']

11、使用 clear 方法清空列表元素。

# 使用语法:list.clear()>>> def_list = ["my", "name", "is", "kele"]>>> def_list.clear()>>> def_list[]

列表扩展

1、使用大于号 > 、小于号< 、等于号== 比较两个列表的大小。

"""比较原理:从首个元素开始比较,若相等,则继续比较,返回第一个不相等元素比较的结果。若所有元素比较均相等,且列表长度一样则两列表相等,否则长度较大的列表大。"""# 判断两列表相等>>> ["a", "b"] == ["a", "b"] True>>> ["a", "b"] == ["a", "c"] False# 判断两列表大于或者等小于>>> ["a", "c"] > ["a", "b", "c"]True>>> ["a", "b"] "a", "b", "c"] True

2、使用 andor 进行对列表表达式进行逻辑判断 。

"""判断原理:对表达式判断进行逻辑判断 1、and - 有假则为假 2、 or - 有真则为真"""# and>>> ["a"] == ["a"] and ["a"] == ["a"]True>>> ["a"] == ["a"] and ["a"] == ["b"]False# or>>> ["a"] == ["a"] or ["a"] == ["a"]True>>> ["a"] == ["a"] or ["a"] == ["b"] True

总结

  1. 列表作为 Python 最基本的数据类型之一,在工作中十分常用,一般与其他数据类型搭配使用,用于构建数据结构。

  2. 定义列表可直接使用 [], 也可选择 list() 方法,个人偏向于前者。

  3. 基础操作符中的列表截取、或称之为切片,很有意思,建议多探讨、研究。

  4. 使用 list() 方法转换其他序列时,转换对象需为可迭代对象,否则会报错。

  5. 自建方法均比较常用,索引的相关操作,需考虑索引值范围,调用方式有两种,一是使用关键字 list.方法(参数),二是使用 定义的列表变量名.方法(参数),其原理都是调用 Python 中的 list 类中的方法,案例中使用后者。

  6. 文中难免会出现一些描述不当之处(尽管我已反复检查多次),欢迎在留言区指正,列表相关的知识点也可进行分享。

  7. Python 系列相关文章已全部更新至个人博客:kelepython.rtfd.io,欢迎前往阅读。

历史文章推荐阅读这周,你欠自己一份工作计划备考那些事儿备考信息系统,助你跨入高级职称行列一文搞定 Python 字符串操作(上)一文搞定 Python 字符串操作(下)Python 字符串,劳动节前夕加餐那些年的五一黄金周扫码关注公众号获取更多分享如果觉得还不错,点个"在看"鼓励一下!

python traceback_Python 列表操作,节后大放送相关推荐

  1. 前端 Java Python等资源合集大放送

    如果需要学习视频,欢迎关注[JAVA乐园]微信公众号,回复[领取资源]菜单一键领取以下所有200G干货资源,获取更多有用技术干货.文档资料.所有文档会持续更新,欢迎关注一起成长! [img]http: ...

  2. 中秋福利大放送!教你既可朝九晚五,又可诗和远方!

    2019独角兽企业重金招聘Python工程师标准>>> 中秋福利大放送!教你既可朝九晚五,又可诗和远方! 1.不废话,上福利! 中秋节佳节将至,提前祝所有关注「飞鱼说编程」的小伙伴们 ...

  3. r matlab spss,特别放送 | 零基础编程入门:Python、Matlab、R、SPSS资料大放送

    原标题:特别放送 | 零基础编程入门:Python.Matlab.R.SPSS资料大放送 我们一直相信: 一切不能实实在在帮助到同学的资料 都是耍流氓 小助手的目标是: 做一次又一次真正有价值.愉悦感 ...

  4. 好插件·用户造【CSND超好用插件】·【机械键盘大放送】

    好插件·用户造,CSDN寻找最佳产品体验官 |有奖征文赛进行中- 活动地址:(快来参加·[机械键盘大放送]) [https://bbs.csdn.net/topics/603667668?shares ...

  5. 遥感资源大放送(上):用开源代码,训练土地分类模型

    教程传送门 遥感资源大放送(下)| 11 个经典遥感数据集 遥感影像是开展测绘地理信息工作的重要数据,对于地理国情监测.地理信息数据库更新等意义重大,在军事.商业.民生等领域发挥了越来越重要的作用. ...

  6. 上千个国外免费权威优质编程学习课程大放送 —— 提升篇

    随着互联网的发展,像 MIT 和斯坦福等世界名校,都开始在网上公开一些优质的在线免费课程供大家学习.到现在,已经有来自全球共 1000 所左右的学校提供了非常多的优质课程,最有名的平台就是 MOOC. ...

  7. IE浏览器另类功能大放送(转)

    IE浏览器另类功能大放送(转) 一般用户在用Internet Explorer 6的时候,我们有时会认为它只是一个Web页面浏览器而已.其实,IE6还有很多其他的功能,而且相当有用. 1.在互联网上查 ...

  8. 【算力大放送2】GPU 专属服务器使用教程!!!

    关注上方"深度学习技术前沿",选择"星标公众号", 资源干货,第一时间送达! 昨天,已给大家放送了如何获取免费GPU的方法,可以查看[算力大放送]专属 GPU ...

  9. 【资源放送】机器学习/深度学习最全公开视频大放送!

    文章首发于微信公众号<有三AI> [资源放送]机器学习/深度学习最全公开视频大放送! 该篇小记一下机器学习与深度学习的一些好的基础视频资源. 如果你是刚入门的小白,建议细细阅读一下下面将要 ...

最新文章

  1. nodejs http.get 方法可以 request 不行
  2. 关于android基础教程一书的初步解读后发现的一些问题
  3. 【OpenCV3】旋转矩形(cv::RotateRect)的绘制
  4. 【渝粤题库】国家开放大学2021春2175市场营销学题目
  5. centos7.0 安装vsftp实录
  6. 【优化求解】基于matlab遗传算法求解列车交路方案优化问题【含Matlab源码 1361期】
  7. tomcat session过期时间的设置
  8. PN5321(PN5321A3HN/C106)国产替代,FSVP532软硬件兼容,支持A卡,B卡,FeliCa卡,支持ISO/IEC18092,ECM340点对点
  9. 自制 arduino 音符频率对照表(音符在arduino里对应的值)
  10. 熟知ios与android游戏渠道的区别,艾瑞:2013Q4中国iOS官方游戏分发渠道和Android游戏分发渠道产品榜单热门产品情况...
  11. axf下不了 keil5jlink_keil无法生成axf文件之解决方法
  12. 小米12和小米11pro的区别
  13. java根据某天获取当前周的日期
  14. 服务器流量异常的原因分析和解决办法
  15. java实现图片平铺倾斜水印效果--转载
  16. IT人的5G网络架构视点:从网络架构演进的前世今生详解5G各NF网络功能体
  17. Linux之——UltraISO写入引导扇区时弹出“找到多于1个分区”解决方法
  18. 微服务实战之春云与刀客(四)—— docker swarm 集群实战
  19. SAP中的邮件通讯处理
  20. 如何在word中输入打对勾的小方框-☑

热门文章

  1. 新农大计算机学院照片,【新生指南】小团带你逛校园(内附农大全景图~)
  2. dax 筛选 包含某个字_Power BI 利器——DAX
  3. 金蝶系统怎么清理服务器,【金蝶KIS专业版】如何注销加密服务器记录
  4. kali linux工具pyrit,在Kali Linux上安装cuda、pyritcuda以及optimus -电脑资料
  5. 执行transact-sql语句或批处理时发生异常_DAY5-step6 Python异常处理:try, raise,except, finally...
  6. 跳转类内方法快捷键_想要快速编写代码,你得熟悉这些快捷键!
  7. JAVA实体类不要使用基本类型,基本类型包含byte、int、short、long、float、double、char、boolean...
  8. 定位于定位优化(iOS)
  9. mvc+ef中比较数据
  10. UVA 10055(Hashmat the brave warrior )