4. 列表(list)

可以把列表当做是一个有序的容器,在里面可以放很多的元素。

4.1 列表的定义

  • 列表可以完成大多数集合类的数据结构实现。列表中元素的类型可以不相同,它在支持数字,字符串甚至可以包含列表(所谓嵌套)
  • 列表是写在方括号[]之间的,用逗号分隔开的元素列表
  • 列表索引值以0为开始,-1为从末尾的开始位置
  • 列表可以使用+操作符进行拼接,用*表示重复
>>>user_list = ["铁锤","钢弹","弹头","导弹", "火箭"]
>>>print(user_list[1:4])
['钢弹', '弹头', '导弹']>>>number_list = [98,88,666,12,-1]
>>>print(user_list + number_list)
['铁锤', '钢弹', '弹头', '导弹', '火箭', 98, 88, 666, 12, -1]testlist = [1,"测试"]
print(type(testlist[0]))    # 查看元素类型为int
print(type(testlist[1]))    # 查看元素类型为str

4.2 常用方法(功能)

为了方便我们操作列表,Python中对所有列表提供了一些的功能。

操作名称 操作方法 举例
访问列表元素 通过下标直接访问 print(list[1])
列表切片 使用[: :] list[2:5:2]
遍历列表 使用for循环 for i in list: print(i)
[增]列表尾部追加 使用append方法 如下详细说明
[增]列表追加数据 使用extent方法 如下详细说明
[增]列表插入数据 使用insert方法 如下详细说明
[删]列表删除数据 del:通过索引删除指定位置的元素
remove:移除列表指定值的第一个匹配值。如果没找到会抛异常
如下详细说明
[删]列表尾部弹出 使用pop方法 如下详细说明
[改]更新列表数据 通过下标直接修改 list[1] = “Rio”
[查]列表成员关系 in,not in 2 in list1
[排]列表的反转 reverse 如下详细说明
[排]列表的排序 sort 如下详细说明
列表的加法操作 + list3 = list1 + list2
  1. 追加,在原列表中尾部追加值。append
   user_list = ["苍老师", "有坂深雪", "大桥未久"]print("-----增加前,列表的数据-----")print(user_list)usertemp = input("请输入你喜欢的女优姓名:")user_list.append(usertemp)print("-----增加后,列表的数据-----")print(user_list)
  1. 扩展,将一个列表中的元素添加另外一个列表。extend
   a = [1,2]b = [3,4]a.append(b)  # 将b列表当做一个元素,加入到a列表print(a)a.extend(b)  # 将b列表中的每个元素,逐一加入到a列表print(a)
  1. 插入,在原列表的指定索引位置插入值。insert
   user_list = ["苍老师", "有坂深雪", "大桥未久"]print("-----增加前,列表的数据-----")print(user_list)user_list.insert(0, "天海翼")   #指定下标位置插入元素。第一个变量表示下标,第二个变量表示元素(对象)user_list.insert(2, "吉泽明步")print("-----增加后,列表的数据-----")print(user_list)
  1. 在原列表中根据值删除(从左到右找到第一个删除)。remove,注意区别del
   user_list = ["苍老师", "有坂深雪", "大桥未久", "三上悠亚", "苍老师", "柚木提娜", "苍老师"]print("-----删除前,列表的数据-----")print(user_list)user_list.remove("苍老师")print("-----remove删除后,列表的数据-----")print(user_list)del user_list[2]print("-----del指定元素删除后,列表的数据-----")print(user_list)
  1. 在原列表中根据索引踢出某个元素。pop
   user_list = ["苍老师", "有坂深雪", "大桥未久", "三上悠亚", "苍老师", "柚木提娜", "苍老师"]print("-----删除前,列表的数据-----")print(user_list)item1 = user_list.pop()  # 在user_list删除最后一个,并讲删除值赋值给item1print("-----删除后,列表的数据-----")print(user_list)item2 = user_list.pop(-2)  # 在user_list中删除下标为-2的值,并将删除值赋值给item2print(user_list)
  1. 清空原列表
   user_list = ["苍老师", "有坂深雪", "大桥未久", "三上悠亚", "苍老师", "柚木提娜", "苍老师"]user_list.clear() print(user_list)
  1. 列表的排序
   user_list = [1,4,2,3,5] user_list.reverse()  #将列表所有元素反转user_list.sort()  #将列表元素升序user_list.sort(reverse=True)   #将列表元素降序
  1. 查找列表元素(in,not in)
   user_list = ["苍老师", "有坂深雪", "大桥未久", "三上悠亚", "苍老师", "柚木提娜", "苍老师"]findName = input("请输入你要查找的名字:")if findName in user_list:print("库里包含该关键字")else:print("没有找到")mylist = ["a","b","c","a","b"]print(mylist.index("a",1,4))  #查询指定下标范围的元素并返回对应数据的下标print(mylist.index("a",1,3))    #查找范围左闭右开[1,3),找不到会报错print(mylist.count("b")) #统计某个元素出现的次数

4.3 转换为列表

如果想要让某些元素转换为列表类型,一般需要通过list强转,他的内部其实就是循环每个元素,再将元素追加到列表中。
所以,想要转换为列表类型有要求:必须可以被循环的元素才能转换为列表。

message = "我猜你的枪里没有子弹"
data = list(message)
print(data) # ["我","猜","你","的","枪","里","没","有","子","弹"]

4.4 其他

  1. 获取长度
   user_list = ["苍老师", "有坂深雪", "大桥未久"]length = len(user_list)    # len()可以得到列表的长度# 用for循环遍历元素i = 0while i < length:print(user_list[i])i += 1
  1. 索引
   user_list = ["苍老师", "有坂深雪", "大桥未久", "三上悠亚", "Kirara Asuka", "柚木提娜", "吉泽明步"]print(user_list[0])print(user_list[3])print(user_list[-1])print(user_list[-4])
  1. 根据索引删除元素
   user_list = ["苍老师", "有坂深雪", "大桥未久", "三上悠亚", "Kirara Asuka", "柚木提娜", "吉泽明步"]del user_list[1]del user_list[3]
  1. 根据索引替换元素
   user_list = ["苍老师", "有坂深雪", "大桥未久", "三上悠亚", "Kirara Asuka", "柚木提娜", "吉泽明步"]user[0] = "天海翼"user[-1] = "仁科百华"
  1. 切片
   user_list = ["苍老师", "有坂深雪", "大桥未久", "三上悠亚", "Kirara Asuka", "柚木提娜", "吉泽明步"]print( user_list[0:2] )print( user_list[1:] )print( user_list[:-1] )
  1. 步长
   user_list = ["苍老师", "有坂深雪", "大桥未久", "三上悠亚", "Kirara Asuka", "柚木提娜", "吉泽明步"]print( user_list[1:4:2] )print( user_list[0::2] )print( user_list[1::2] )print( user_list[4:1:-1] )
  1. for循环
user_list = ["苍老师", "有坂深雪", "大桥未久", "三上悠亚", "Kirara Asuka", "柚木提娜", "吉泽明步"]
for item in user_list:print(item)
   user_list = ["苍老师", "有坂深雪", "大桥未久", "三上悠亚", "Kirara Asuka", "柚木提娜", "吉泽明步"]for item in user_list:if item == "Kirara Asuka":continueprint(item)

4.5 嵌套

列表属于容器,内部可以存放各种数据,所以他也支持列表的嵌套,如:

data = [ "谢广坤",["海燕","赵本山"],True,[11,22,33,44],"宋小宝" ]

对于嵌套的值,可以根据之前学习的索引知识点来进行学习,例如:

data = [ "谢广坤",["海燕","赵本山"],True,[11,22,33,44],"宋小宝" ]
print( data[0] )
print( data[1] )
print( data[0][2] )
print( data[1][-1] )
data.append(666)
print(data)
del data[-2]
print(data)
data[1].append("谢大脚")
print(data)

练习题

Python全栈笔记(六)相关推荐

  1. Python全栈笔记(一)

    环境搭建 1.计算机基础 1.1 计算机组成 计算机组成主要分为五个部分: \1. 控制器:是整个计算机的中枢神经,其功能是对程序规定的控制信息进行解释,根据其要求进行控制,调度程序.数据.地址,协调 ...

  2. Python全栈笔记(练习题,持续更新)

    # 1. 写代码,有如下列表,按照要求实现每一个功能.li = ["alex", "WuSir", "ritian", "barr ...

  3. Python全栈(六)项目前导之11.Vue-Router的使用

    Vue-Router的使用 一.匹配404错误 二.嵌套路由 三.编程式导航 四.命名路由和视图 1.命名路由 2.命名视图 五.重定向和别名 一.匹配404错误 在路由规则中, * 匹配任意字符,所 ...

  4. python全栈开发中级班全程笔记(第二模块、第四章)(常用模块导入)

    python全栈开发笔记第二模块 第四章 :常用模块(第二部分)     一.os 模块的 详解 1.os.getcwd()    :得到当前工作目录,即当前python解释器所在目录路径 impor ...

  5. python全栈开发中级班全程笔记(第三模块、第一章(1.面向对象基础))

    python全栈开发笔记第三模块           第一部分 第一章 :面向对象(类) 一.面向过程编程1.面向过程编程:主要是过程二字,所谓过程,就是指解决问题的步骤,也可以说是设计一套流水线(机 ...

  6. 唤醒手腕Python全栈工程师学习笔记(持久存储篇)

    这个篇目是"持久存储篇",讲的就是Python操作数据库,这边介绍3种数据库,分别是MySQL.Redis.Mongodb 1. Python操作MySQL数据库 MySQL属于传 ...

  7. 学习笔记之Python全栈开发/人工智能公开课_腾讯课堂

    Python全栈开发/人工智能公开课_腾讯课堂 https://ke.qq.com/course/190378 https://github.com/haoran119/ke.qq.com.pytho ...

  8. Python全栈学习day1

    python 全栈开发之路 day1 本节内容 计算机发展介绍 计算机硬件组成 计算机基本原理 计算机 计算机(computer)俗称电脑,是一种用于高速计算的电子计算机器,可以进行数值计算,又可以进 ...

  9. python 全栈开发之路 day1

    python 全栈开发之路 day1 本节内容 计算机发展介绍 计算机硬件组成 计算机基本原理 计算机 计算机(computer)俗称电脑,是一种用于高速计算的电子计算机器,可以进行数值计算,又可以进 ...

  10. python全栈开发工程师_【2018重磅巨献】老男孩Python高级全栈开发工程师第三期...

    2018年老男孩python全栈第三期老男孩python全栈3期 老男孩教育Python全栈开发为国内首家专注python全方面开发的教育机构 老男孩Python全栈第三期课程详细目录,高清不加密! ...

最新文章

  1. Java多线程:线程8锁案例分析
  2. 转 linux进程内存到底怎么看 剖析top命令显示的VIRT RES SHR值
  3. 记录使用Spartan-6 FPGA进行一次3-8译码器实验
  4. 石家庄学院c语言试题,谁会高级语言程序设计?要求用C语言,帮帮我把,愁死我啦...
  5. C语言与JAVA内存管理_C语言内存管理
  6. Spring Cloud构建微服务架构-Hystrix监控面板
  7. JavaScript浮点运算0.2+0.1 !== 0.3
  8. lombok标签_微服务之:springboot入门、Swagger、Lombok使用
  9. c++ win32 获取串口高低电平_串口和USB的区别,几种常见的串口协议
  10. JSP — 如何设置jsp中cookie的过期时间
  11. 小波神经网络模型matlab,神经网络预测模型优点
  12. gif动态图批量加水印方法
  13. 使用GDAL实现DEM的地貌晕渲图(三)
  14. 解决无法解析服务器DNS地址
  15. 从都市丽人2022年财报,看专业内衣如何进阶突围
  16. 4G<-->5G互操作
  17. 取消notepad++打开.bat文件
  18. TalkingData:未来10年是大数据价值变现的阶段
  19. 中国定制家具行业深度调研及投资前景预测报告
  20. linux cp命令的-f 参数

热门文章

  1. 4个免费的ASP.NET托管网站
  2. 如何添加BigBoss的Cydia源地址
  3. 公开密匙(public key)和专用密匙(private key)
  4. 无法解析 taglibs:standard:1.1.2
  5. 一套键鼠控制多台电脑操作——Synergy软件(windows环境)
  6. Python绘制二元函数图像
  7. Sinew探索金融衍生品领域,增强金融市场流动性
  8. 二本b类大学计算机专业,位于广东的二本B类大学有哪些?
  9. python实现杨辉三角的规律_Python实现杨辉三角算法
  10. 产品经理面试必问5大问题 (六)